Sha256: 38cff49ee98bfe55ecafb0c79b49b1f6d589744459ef7d333fac0b53f42f9f49

Contents?: true

Size: 1.35 KB

Versions: 4

Compression:

Stored size: 1.35 KB

Contents

module Pay
  module Paddle
    module Webhooks
      class SubscriptionUpdated
        def initialize(data)
          subscription = Pay.subscription_model.find_by(processor: :paddle, processor_id: data["subscription_id"])

          return if subscription.nil?

          case data["status"]
          when "deleted"
            subscription.status = "canceled"
            subscription.ends_at = Time.zone.parse(data["next_bill_date"]) || Time.zone.now if subscription.ends_at.blank?
          when "trialing"
            subscription.status = "trialing"
            subscription.trial_ends_at = Time.zone.parse(data["next_bill_date"])
          when "active"
            subscription.status = "active"
            subscription.paddle_paused_from = Time.zone.parse(data["paused_from"]) if data["paused_from"].present?
          else
            subscription.status = data["status"]
          end

          subscription.quantity = data["new_quantity"]
          subscription.processor_plan = data["subscription_plan_id"]
          subscription.paddle_update_url = data["update_url"]
          subscription.paddle_cancel_url = data["cancel_url"]

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

          subscription.save!
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pay-2.4.4 lib/pay/paddle/webhooks/subscription_updated.rb
pay-2.4.3 lib/pay/paddle/webhooks/subscription_updated.rb
pay-2.4.2 lib/pay/paddle/webhooks/subscription_updated.rb
pay-2.4.0 lib/pay/paddle/webhooks/subscription_updated.rb