Sha256: f131ae373753e20d8d2d66b2acafd704db2369e59f636ab6c955a5f1863cc056

Contents?: true

Size: 1.27 KB

Versions: 5

Compression:

Stored size: 1.27 KB

Contents

module Pay
  module Stripe
    module Webhooks
      class ChargeSucceeded
        def call(event)
          object = event.data.object
          billable = Pay.find_billable(processor: :stripe, processor_id: object.customer)

          return unless billable.present?
          return if billable.charges.where(processor_id: object.id).any?

          create_charge(billable, object)
        end

        def create_charge(billable, object)
          charge = billable.charges.find_or_initialize_by(
            processor: :stripe,
            processor_id: object.id
          )

          charge.update(
            amount: object.amount,
            card_last4: object.payment_method_details.card.last4,
            card_type: object.payment_method_details.card.brand,
            card_exp_month: object.payment_method_details.card.exp_month,
            card_exp_year: object.payment_method_details.card.exp_year,
            created_at: Time.zone.at(object.created)
          )

          notify_user(billable, charge)

          charge
        end

        def notify_user(billable, charge)
          if Pay.send_emails && charge.respond_to?(:receipt)
            Pay::UserMailer.with(billable: billable, charge: charge).receipt.deliver_later
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pay-2.5.0 lib/pay/stripe/webhooks/charge_succeeded.rb
pay-2.4.4 lib/pay/stripe/webhooks/charge_succeeded.rb
pay-2.4.3 lib/pay/stripe/webhooks/charge_succeeded.rb
pay-2.4.2 lib/pay/stripe/webhooks/charge_succeeded.rb
pay-2.4.0 lib/pay/stripe/webhooks/charge_succeeded.rb