From 2faea65f82d427abd8f274711424a4cd05d4124f Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 18 Nov 2020 14:51:23 +0000 Subject: [PATCH] Bring in Spree::PaypalController#confirm method Original method from the gem. This handles the post-payment response from paypal. --- .../spree/paypal_controller_decorator.rb | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/controllers/spree/paypal_controller_decorator.rb b/app/controllers/spree/paypal_controller_decorator.rb index 1cade23304..a012978600 100644 --- a/app/controllers/spree/paypal_controller_decorator.rb +++ b/app/controllers/spree/paypal_controller_decorator.rb @@ -51,6 +51,27 @@ Spree::PaypalController.class_eval do end end + def confirm + order = current_order || raise(ActiveRecord::RecordNotFound) + order.payments.create!({ + source: Spree::PaypalExpressCheckout.create({ + token: params[:token], + payer_id: params[:PayerID] + }), + amount: order.total, + payment_method: payment_method + }) + order.next + if order.complete? + flash.notice = Spree.t(:order_processed_successfully) + flash[:commerce_tracking] = "nothing special" + session[:order_id] = nil + redirect_to completion_route(order) + else + redirect_to checkout_state_path(order.state) + end + end + def cancel flash[:notice] = Spree.t('flash.cancel', scope: 'paypal') redirect_to main_app.checkout_path