diff --git a/app/controllers/checkout_controller.rb b/app/controllers/checkout_controller.rb index b1bbff0d99..8f45b3f3c5 100644 --- a/app/controllers/checkout_controller.rb +++ b/app/controllers/checkout_controller.rb @@ -61,20 +61,18 @@ class CheckoutController < Spree::StoreController return if redirect_to_paypal_express_form_if_needed end - if @order.state == "delivery" - @order.select_shipping_method(shipping_method_id) - end + @order.select_shipping_method(shipping_method_id) if @order.state == "delivery" next if advance_order_state(@order) - flash[:error] = if @order.errors.present? - @order.errors.full_messages.to_sentence - else - t(:payment_processing_failed) - end + flash[:error] = order_workflow_error return update_failed end + update_result + end + + def update_result if @order.completed? update_succeeded else @@ -104,6 +102,14 @@ class CheckoutController < Spree::StoreController end end + def order_workflow_error + if @order.errors.present? + @order.errors.full_messages.to_sentence + else + t(:payment_processing_failed) + end + end + # Clears the cached order. Required for #current_order to return a new order # to serve as cart. See https://github.com/spree/spree/blob/1-3-stable/core/lib/spree/core/controller_helpers/order.rb#L14 # for details.