Class: Billy::LemonSqueezy::Webhooks::SubscriptionPaymentSuccess

Inherits:
Object
  • Object
show all
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_subscription.

  return if .charges.where(lemon_squeezy_id: event.subscription_payment_id).any?

  charge = create_charge(billy_subscription, , 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, , 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 = .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