Sha256: f8deb6deb46176fe6f8da084ff3af0f920d494347d1f6367cc3b579564cff7e3

Contents?: true

Size: 1.86 KB

Versions: 4

Compression:

Stored size: 1.86 KB

Contents

module Pay
  module Stripe
    module Subscription
      extend ActiveSupport::Concern

      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

      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

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

      def stripe_paused?
        false
      end

      def stripe_pause
        raise NotImplementedError, "Stripe does not support pausing subscriptions"
      end

      def stripe_resume
        unless on_grace_period?
          raise StandardError, "You can only resume subscriptions within their grace period."
        end

        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

      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
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pay-2.5.0 lib/pay/stripe/subscription.rb
pay-2.4.4 lib/pay/stripe/subscription.rb
pay-2.4.3 lib/pay/stripe/subscription.rb
pay-2.4.2 lib/pay/stripe/subscription.rb