Class: Billy::LemonSqueezy::Webhooks::SubscriptionPaymentSuccess
- Inherits:
-
Object
- Object
- Billy::LemonSqueezy::Webhooks::SubscriptionPaymentSuccess
- Defined in:
- lib/billy/lemon_squeezy/webhooks/subscription_payment_success.rb
Instance Method Summary collapse
Instance Method Details
#call(event) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/billy/lemon_squeezy/webhooks/subscription_payment_success.rb', line 6 def call(event) billy_subscription = Billy::Subscription.find_by(kind: "lemon_squeezy", lemon_squeezy_id: event.subscription_id) if billy_subscription.nil? Rails.logger.error("[Billy] Unable to find Billy::Subscription for: '#{event.subscription_id}'") return end billy_account = billy_subscription.account return if billy_account.charges.where(lemon_squeezy_id: event.subscription_payment_id).any? charge = create_charge(billy_subscription, billy_account, event) end |
#create_charge(billy_subscription, billy_account, event) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/billy/lemon_squeezy/webhooks/subscription_payment_success.rb', line 21 def create_charge(billy_subscription, billy_account, event) # payment_method_details = Billy::PaymentMethod.payment_method_details_for(lemon_squeezy_id: event.subscription_id) attributes = { kind: "card", amount: event.total.ceil, created_at: Time.zone.parse(event.created_at), currency: event.currency, card_type: event.card_brand, card_last4: event.card_last_four, paddle_receipt_url: event.urls.invoice_url, subscription: billy_subscription } charge = billy_account.charges.find_or_initialize_by(lemon_squeezy_id: event.subscription_invoices_id) charge.update!(attributes) # Update customer's payment method # Billy::PaymentMethod.sync(billy_account: billy_account, attributes: payment_method_details) charge end |