Method: Pay::Stripe::Subscription#change_quantity

Defined in:
lib/pay/stripe/subscription.rb

#change_quantity(quantity, **options) ⇒ Object

This updates a SubscriptionItem’s quantity in Stripe

For a subscription with a single item, we can update the subscription directly if no SubscriptionItem ID is available Otherwise a SubscriptionItem ID is required so Stripe knows which entry to update



222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/pay/stripe/subscription.rb', line 222

def change_quantity(quantity, **options)
  subscription_item_id = options.delete(:subscription_item_id) || subscription_items&.first&.dig("id")
  if subscription_item_id
    ::Stripe::SubscriptionItem.update(subscription_item_id, options.merge(quantity: quantity), stripe_options)
    @stripe_subscription = nil
  else
    @stripe_subscription = ::Stripe::Subscription.update(processor_id, options.merge(quantity: quantity).merge(expand_options), stripe_options)
  end
  true
rescue ::Stripe::StripeError => e
  raise Pay::Stripe::Error, e
end