Sha256: fc8311eae195894be319cf6219a4af3df8972881500dbd57bfe6c1be6be958ec

Contents?: true

Size: 1.06 KB

Versions: 10

Compression:

Stored size: 1.06 KB

Contents

module Pay
  module Stripe
    module Webhooks

      class SubscriptionUpdated
        def call(event)
          object = event.data.object
          subscription = Pay.subscription_model.find_by(processor: :stripe, processor_id: object.id)

          return if subscription.nil?

          subscription.quantity       = object.quantity
          subscription.processor_plan = object.plan.id
          subscription.trial_ends_at  = Time.at(object.trial_end) if object.trial_end.present?

          # If user was on trial, their subscription ends at the end of the trial
          if object.cancel_at_period_end && subscription.on_trial?
            subscription.ends_at = subscription.trial_ends_at

          # User wasn't on trial, so subscription ends at period end
          elsif object.cancel_at_period_end
            subscription.ends_at = Time.at(object.current_period_end)

          # Subscription isn't marked to cancel at period end
          else
            subscription.ends_at = nil
          end

          subscription.save!
        end
      end

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
pay-1.0.2 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.1 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.rc3 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.rc2 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.rc1 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.beta5 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.beta4 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.beta3 lib/pay/stripe/webhooks/subscription_updated.rb
pay-1.0.0.beta2 lib/pay/stripe/webhooks/subscription_updated.rb