Class: Pay::PaddleBilling::PaymentMethod
Class Method Summary
collapse
Instance Method Summary
collapse
find_by_processor_and_id, pay_processor_for, #payment_processor
Class Method Details
.sync(pay_customer:, attributes:, try: 0, retries: 1) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'app/models/pay/paddle_billing/payment_method.rb', line 11
def self.sync(pay_customer:, attributes:, try: 0, retries: 1)
details = attributes.method_details
attrs = {
payment_method_type: details.type.downcase
}
case details.type.downcase
when "card"
attrs[:brand] = details.card.type
attrs[:last4] = details.card.last4
attrs[:exp_month] = details.card.expiry_month
attrs[:exp_year] = details.card.expiry_year
end
payment_method = pay_customer.payment_methods.find_or_initialize_by(processor_id: attributes.payment_method_id)
payment_method.update!(attrs)
payment_method
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique
try += 1
if try <= retries
sleep 0.1
retry
else
raise
end
end
|
.sync_from_transaction(pay_customer:, transaction:) ⇒ Object
4
5
6
7
8
9
|
# File 'app/models/pay/paddle_billing/payment_method.rb', line 4
def self.sync_from_transaction(pay_customer:, transaction:)
transaction = ::Paddle::Transaction.retrieve(id: transaction)
return unless transaction.status == "completed"
return if transaction.payments.empty?
sync(pay_customer: pay_customer, attributes: transaction.payments.first)
end
|
Instance Method Details
#detach ⇒ Object
41
42
|
# File 'app/models/pay/paddle_billing/payment_method.rb', line 41
def detach
end
|
#make_default! ⇒ Object
38
39
|
# File 'app/models/pay/paddle_billing/payment_method.rb', line 38
def make_default!
end
|