Module: Pay::Stripe::Subscription

Extended by:
ActiveSupport::Concern
Defined in:
lib/pay/stripe/subscription.rb

Instance Method Summary collapse

Instance Method Details

#stripe?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/pay/stripe/subscription.rb', line 10

def stripe?
  processor == "stripe"
end

#stripe_cancelObject



14
15
16
17
18
19
20
21
22
23
# File 'lib/pay/stripe/subscription.rb', line 14

def stripe_cancel
  subscription = processor_subscription
  subscription.cancel_at_period_end = true
  subscription.save

  new_ends_at = on_trial? ? trial_ends_at : Time.at(subscription.current_period_end)
  update(ends_at: new_ends_at)
rescue ::Stripe::StripeError => e
  raise Pay::Stripe::Error, e
end

#stripe_cancel_now!Object



25
26
27
28
29
30
# File 'lib/pay/stripe/subscription.rb', line 25

def stripe_cancel_now!
  processor_subscription.delete
  update(ends_at: Time.zone.now, status: :canceled)
rescue ::Stripe::StripeError => e
  raise Pay::Stripe::Error, e
end

#stripe_on_grace_period?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/pay/stripe/subscription.rb', line 32

def stripe_on_grace_period?
  canceled? && Time.zone.now < ends_at
end

#stripe_resumeObject



36
37
38
39
40
41
42
43
44
# File 'lib/pay/stripe/subscription.rb', line 36

def stripe_resume
  subscription = processor_subscription
  subscription.plan = processor_plan
  subscription.trial_end = on_trial? ? trial_ends_at.to_i : "now"
  subscription.cancel_at_period_end = false
  subscription.save
rescue ::Stripe::StripeError => e
  raise Pay::Stripe::Error, e
end

#stripe_swap(plan) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/pay/stripe/subscription.rb', line 46

def stripe_swap(plan)
  subscription = processor_subscription
  subscription.cancel_at_period_end = false
  subscription.plan = plan
  subscription.proration_behavior = (prorate ? "create_prorations" : "none")
  subscription.trial_end = on_trial? ? trial_ends_at.to_i : "now"
  subscription.quantity = quantity if quantity?
  subscription.save
rescue ::Stripe::StripeError => e
  raise Pay::Stripe::Error, e
end