--- a/payment_commerce.module +++ b/payment_commerce.module @@ -155,7 +155,6 @@ * Implements Payment::finish_callback. */ function payment_commerce_payment_finish(Payment $payment) { - payment_commerce_redirect_pane($payment); $order = commerce_order_load($payment->context_data['order_id']); if (payment_status_is_or_has_ancestor($payment->getStatus()->status, PAYMENT_STATUS_FAILED)) { $view = ''; @@ -409,10 +409,16 @@ $pids = payment_commerce_pids_load($payment->context_data['order_id']); if (is_array($pids) && $payment->pid == reset($pids)) { $order = commerce_order_load($payment->context_data['order_id']); - if (payment_status_is_or_has_ancestor($payment->getStatus()->status, PAYMENT_STATUS_FAILED)) { - commerce_payment_redirect_pane_previous_page($order); + $controller = $payment->method->controller; + $payment_status = $payment->getStatus()->status; + if (!($controller instanceof PaymentMethodBasicController) && !payment_status_is_or_has_ancestor($payment_status, PAYMENT_STATUS_NEW) && !payment_status_is_or_has_ancestor($payment_status, PAYMENT_STATUS_SUCCESS)) { + commerce_order_status_update($order, 'checkout_checkout'); } else { + if (payment_status_is_or_has_ancestor($payment_status, PAYMENT_STATUS_SUCCESS)) { + commerce_order_status_update($order, 'checkout_payment'); + } + commerce_payment_redirect_pane_next_page($order); } }