Sha256: e608a20b994f2e48411cd500fe51431993bd8a3644297dbb78dbb04bc19ff5f0

Contents?: true

Size: 814 Bytes

Versions: 3

Compression:

Stored size: 814 Bytes

Contents

module Tang
  class SaveCard
    def self.call(customer, token)
      if customer.card.present?
        card = customer.card
      else
        card = Card.new(customer: customer)
      end

      begin
        if customer.stripe_id.present?
          cu = Stripe::Customer.retrieve(customer.stripe_id)
          cu.source = token
          cu.save
        else
          cu = Stripe::Customer.create(
            source: token,
            email: customer.email
          )
          customer.stripe_id = cu.id
          customer.save!
        end

        # Save the payment method
        stripe_card = cu.sources.retrieve(cu.default_source)
        card.update_from_stripe(stripe_card)

      rescue Stripe::StripeError => e
        card.errors[:base] << e.message
      end
      return card
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tang-0.0.9 app/services/tang/save_card.rb
tang-0.0.8 app/services/tang/save_card.rb
tang-0.0.1 app/services/tang/save_card.rb