Module: Spree::Admin::PaymentsControllerDecorator
- Defined in:
- app/controllers/spree/admin/payments_controller_decorator.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#create ⇒ Object
override For vpago gateways created from the admin backend, we skip immediate processing and keep the payment in
checkoutstate so the admin can open the QR checkout URL and pay on behalf of the customer. -
#fire ⇒ Object
override Before the normal
process!re-runs the gateway, reset a stuck vpago payment back tocheckout. - #set_vpago_payment_source ⇒ Object
Class Method Details
.prepended(base) ⇒ Object
4 5 6 |
# File 'app/controllers/spree/admin/payments_controller_decorator.rb', line 4 def self.prepended(base) base.before_action :set_vpago_payment_source, only: %i[create update] end |
Instance Method Details
#create ⇒ Object
override
For vpago gateways created from the admin backend, we skip immediate processing
and keep the payment in checkout state so the admin can open the QR checkout
URL and pay on behalf of the customer. The bank webhook
(process_payment -> Vpago::PaymentProcessorJob) completes the order once paid.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/controllers/spree/admin/payments_controller_decorator.rb', line 21 def create return super unless @payment_method&.vpago_payment? invoke_callbacks(:create, :before) @payment = @order.payments.build(object_params) if @payment.save invoke_callbacks(:create, :after) flash[:success] = (@payment, :successfully_created) redirect_to spree.admin_order_payments_path(@order) else invoke_callbacks(:create, :fails) flash[:error] = Spree.t(:payment_could_not_be_created) render :new, status: :unprocessable_entity end rescue Spree::Core::GatewayError => e invoke_callbacks(:create, :fails) flash[:error] = e..to_s redirect_to spree.new_admin_order_payment_path(@order) end |
#fire ⇒ Object
override
Before the normal process! re-runs the gateway, reset a stuck vpago
payment back to checkout. Admin reprocess only — the automatic webhook
path is untouched (it auto-resets failed alone).
47 48 49 50 |
# File 'app/controllers/spree/admin/payments_controller_decorator.rb', line 47 def fire reset_stuck_payment_for_reprocess! super end |
#set_vpago_payment_source ⇒ Object
8 9 10 11 12 13 14 |
# File 'app/controllers/spree/admin/payments_controller_decorator.rb', line 8 def set_vpago_payment_source payment_method ||= Spree::PaymentMethod.find(params[:payment][:payment_method_id]) return unless payment_method.vpago_payment? source_params = { payment_option: payment_method.try(:preferred_payment_option) } params[:payment][:source_attributes] = source_params end |