Class: Spree::Wallet::AddPaymentSourcesToWallet
- Inherits:
-
Object
- Object
- Spree::Wallet::AddPaymentSourcesToWallet
- Defined in:
- app/models/spree/wallet/add_payment_sources_to_wallet.rb
Overview
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`.
Instance Method Summary collapse
-
#add_to_wallet ⇒ void
This is called after an order transistions to complete and should save the order’s payment source in the user’s “wallet” for future use.
-
#initialize(order) ⇒ AddPaymentSourcesToWallet
constructor
A new instance of AddPaymentSourcesToWallet.
Constructor Details
#initialize(order) ⇒ AddPaymentSourcesToWallet
Returns a new instance of AddPaymentSourcesToWallet.
7 8 9 |
# File 'app/models/spree/wallet/add_payment_sources_to_wallet.rb', line 7 def initialize(order) @order = order end |
Instance Method Details
#add_to_wallet ⇒ void
This method returns an undefined value.
This is called after an order transistions to complete and should save the order’s payment source in the user’s “wallet” for future use.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/models/spree/wallet/add_payment_sources_to_wallet.rb', line 15 def add_to_wallet if !order.temporary_payment_source && order.user # select valid sources payments = order.payments.valid sources = payments.map(&:source). uniq. compact. select { |payment| payment.try(:reusable?) } # add valid sources to wallet and optionally set a default if sources.any? # arbitrarily sort by id for picking a default order_wallet_payment_sources = sources.sort_by(&:id).map do |source| order.user.wallet.add(source) end make_default(order_wallet_payment_sources) end end end |