class StripeSubscription
Constants
- STATES
Public Class Methods
stripe_class()
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 16 def self.stripe_class Stripe::Subscription end
Public Instance Methods
assign_from_stripe(object)
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 20 def assign_from_stripe(object) assign_attributes( canceled_at: object.canceled_at ? Time.zone.at(object.canceled_at) : nil, stripe_customer_id: object.customer, ended_at: object.ended_at ? Time.zone.at(object.ended_at) : nil, stripe_plan_id: object.plan&.id ) assign_discount(object) assign_items(object) assign_periods(object) StripeModelCallbacks::AttributesAssignerService.execute!( model: self, stripe_model: object, attributes: %w[billing cancel_at_period_end created id livemode status tax_percent] ) end
cancel!(args = {})
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 58 def cancel!(args = {}) to_stripe.delete(args) reload_from_stripe! self end
reactivate!()
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 38 def reactivate! raise "Cannot reactivate unless cancel at period end has been set" unless cancel_at_period_end? # https://stripe.com/docs/subscriptions/canceling-pausing items = [] stripe_subscription_items.each do |item| items << { id: item.stripe_id, plan: item.stripe_plan_id, quantity: item.quantity } end to_stripe.items = items to_stripe.save reload_from_stripe! self end
Private Instance Methods
assign_discount(object)
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 66 def assign_discount(object) return if object.discount.blank? discount = stripe_discount || build_stripe_discount discount.assign_from_stripe(object.discount) end
assign_items(object)
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 73 def assign_items(object) object.items.each do |item| sub_item = find_item_by_stripe_item(item) if persisted? sub_item ||= stripe_subscription_items.build sub_item.assign_from_stripe(item) sub_item.save! if persisted? end end
assign_periods(object)
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 82 def assign_periods(object) assign_attributes( current_period_start: Time.zone.at(object.current_period_start), current_period_end: Time.zone.at(object.current_period_end), start: Time.zone.at(object.start), trial_start: object.trial_start ? Time.zone.at(object.trial_start) : nil, trial_end: object.trial_end ? Time.zone.at(object.trial_end) : nil ) end
find_item_by_stripe_item(item)
click to toggle source
# File lib/stripe_model_callbacks/models/stripe_subscription.rb, line 92 def find_item_by_stripe_item(item) stripe_subscription_items.find do |sub_item| if item.plan.is_a?(String) sub_item.stripe_plan_id == item.plan else sub_item.stripe_plan_id == item.plan.id end end end