Sha256: 17bfde47fac458025622d6884ffd242a175b3eb48faad5afaae0ac8e283e9c8a

Contents?: true

Size: 948 Bytes

Versions: 4

Compression:

Stored size: 948 Bytes

Contents

# This class is responsible for saving payment sources in the user's "wallet"
# for future use.  You can substitute your own class via
# `Spree::Config.add_payment_sources_to_wallet_class`.
class Spree::Wallet::AddPaymentSourcesToWallet
  def initialize(order)
    @order = order
  end

  # This is called after an order transistions to complete and should save the
  # order's payment source/s in the user's "wallet" for future use.
  #
  # @return [void]
  def add_to_wallet
    if !order.temporary_credit_card &&
       order.user_id &&
       order.valid_credit_cards.present?
      # arbitrarily pick the first one for the default
      default_cc = order.valid_credit_cards.first
      # TODO: target for refactoring -- why is order checkout responsible for the user -> credit_card relationship?
      default_cc.user_id = order.user_id
      default_cc.default = true
      default_cc.save
    end
  end

  private

  attr_reader :order
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_core-2.1.1 app/models/spree/wallet/add_payment_sources_to_wallet.rb
solidus_core-2.1.0 app/models/spree/wallet/add_payment_sources_to_wallet.rb
solidus_core-2.1.0.rc1 app/models/spree/wallet/add_payment_sources_to_wallet.rb
solidus_core-2.1.0.beta1 app/models/spree/wallet/add_payment_sources_to_wallet.rb