Class: SpreeAdyen::PaymentSessions::FindOrCreate
- Inherits:
-
Object
- Object
- SpreeAdyen::PaymentSessions::FindOrCreate
- Includes:
- Spree::ServiceModule::Base
- Defined in:
- app/services/spree_adyen/payment_sessions/find_or_create.rb
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(order:, user:, amount:, payment_method:, channel: nil, return_url: nil) ⇒ FindOrCreate
constructor
A new instance of FindOrCreate.
Constructor Details
#initialize(order:, user:, amount:, payment_method:, channel: nil, return_url: nil) ⇒ FindOrCreate
Returns a new instance of FindOrCreate.
6 7 8 9 10 11 12 13 |
# File 'app/services/spree_adyen/payment_sessions/find_or_create.rb', line 6 def initialize(order:, user:, amount:, payment_method:, channel: nil, return_url: nil) @order = order @amount = amount @user = user @payment_method = payment_method @channel = channel || SpreeAdyen::PaymentSession::AVAILABLE_CHANNELS[:web] @return_url = return_url end |
Instance Method Details
#call ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/services/spree_adyen/payment_sessions/find_or_create.rb', line 15 def call return failure(nil, "Cannot create Adyen payment session for the order in the #{order.state} state") unless order.can_create_adyen_payment_session? return success(payment_session) if payment_session.present? create_attributes = { order: order, amount: amount, currency: order.currency, user: user, payment_method: payment_method, channel: channel } create_attributes[:return_url] = return_url if return_url.present? payment_session = SpreeAdyen::PaymentSession.create(create_attributes) payment_session.persisted? ? success(payment_session) : failure(payment_session) end |