Class: SolidusMollie::CreateOrderPayment
- Inherits:
-
Object
- Object
- SolidusMollie::CreateOrderPayment
- Defined in:
- app/services/solidus_mollie/create_order_payment.rb
Overview
Creates a Mollie payment for an order and returns the hosted checkout URL the buyer should be redirected to. The associated Spree::Payment is moved to ‘pending` so Solidus knows it is awaiting an off-site result.
Defined Under Namespace
Classes: Result
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(order:, payment:, redirect_url:, webhook_url:) ⇒ CreateOrderPayment
constructor
A new instance of CreateOrderPayment.
Constructor Details
#initialize(order:, payment:, redirect_url:, webhook_url:) ⇒ CreateOrderPayment
Returns a new instance of CreateOrderPayment.
18 19 20 21 22 23 |
# File 'app/services/solidus_mollie/create_order_payment.rb', line 18 def initialize(order:, payment:, redirect_url:, webhook_url:) @order = order @payment = payment @redirect_url = redirect_url @webhook_url = webhook_url end |
Class Method Details
.call(**kwargs) ⇒ Object
14 15 16 |
# File 'app/services/solidus_mollie/create_order_payment.rb', line 14 def self.call(**kwargs) new(**kwargs).call end |
Instance Method Details
#call ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/services/solidus_mollie/create_order_payment.rb', line 25 def call payment_method = @payment.payment_method mollie = payment_method.client.create_payment( amount: @order.total, currency: @order.currency, description: description, redirect_url: @redirect_url, webhook_url: @webhook_url, method: payment_method.preferred_mollie_method, metadata: { order_number: @order.number, payment_number: @payment.number } ) persist(mollie) Result.new(checkout_url: mollie.checkout_url) rescue StandardError => e Rails.logger.error("[solidus_mollie] failed to create payment for #{@order.number}: #{e.}") Result.new(error: e.) end |