3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'app/services/tang/pay_invoice.rb', line 3
def self.call(stripe_invoice)
stripe_subscription = Stripe::Subscription.retrieve(stripe_invoice.subscription)
subscription = Subscription.find_by(stripe_id: stripe_invoice.subscription)
if subscription.nil?
subscription = Subscription.from_stripe(stripe_subscription)
elsif stripe_subscription.discount.nil?
subscription.update(coupon: nil, coupon_start: nil)
end
invoice = Invoice.from_stripe(stripe_invoice)
charge = nil
if stripe_invoice.charge.present?
stripe_charge = Stripe::Charge.retrieve(stripe_invoice.charge)
charge = Charge.from_stripe(stripe_charge, invoice)
end
if subscription.present?
customer = subscription.customer
customer.update_subscription_end(subscription)
end
return charge
end
|