public function execute() { $active = null; // check if 3d is active $order = $this->_getOrder(); if ($order->getPayment()) { $active = $order->getPayment()->getAdditionalInformation('3dActive'); } // check if 3D secure is active. If not just go to success page if ($active) { $this->_adyenLogger->addAdyenResult("3D secure is active"); // check if it is already processed if ($this->getRequest()->isPost()) { $this->_adyenLogger->addAdyenResult("Process 3D secure payment"); $requestMD = $this->getRequest()->getPost('MD'); $requestPaRes = $this->getRequest()->getPost('PaRes'); $md = $order->getPayment()->getAdditionalInformation('md'); if ($requestMD == $md) { $order->getPayment()->setAdditionalInformation('paResponse', $requestPaRes); try { $result = $order->getPayment()->getMethodInstance()->authorise3d($order->getPayment()); } catch (Exception $e) { $result = 'Refused'; } // check if authorise3d was successful if ($result == 'Authorised') { $order->addStatusHistoryComment(__('3D-secure validation was successful'))->save(); $this->_redirect('checkout/onepage/success'); } else { $order->addStatusHistoryComment(__('3D-secure validation was unsuccessful.'))->save(); $this->_adyenHelper->cancelOrder($order); } } } else { $this->_adyenLogger->addAdyenResult("Customer was redirected to bank for 3D-secure validation."); $order->addStatusHistoryComment(__('Customer was redirected to bank for 3D-secure validation.'))->save(); $this->_view->loadLayout(); $this->_view->getLayout()->initMessages(); $this->_view->renderLayout(); } } else { $this->_redirect('checkout/onepage/success/'); } }
protected function _cancel($response) { $session = $this->_session; // restore the quote $session->restoreQuote(); $order = $this->_order; $this->_adyenHelper->cancelOrder($order); if (isset($response['authResult']) && $response['authResult'] == \Adyen\Payment\Model\Notification::CANCELLED) { $this->messageManager->addError(__('You have cancelled the order. Please try again')); } else { $this->messageManager->addError(__('Your payment failed, Please try again later')); } }
/** * Validate 3D secure payment */ public function execute() { $active = null; // check if 3d is active $order = $this->_getOrder(); if ($order->getPayment()) { $active = $order->getPayment()->getAdditionalInformation('3dActive'); } // check if 3D secure is active. If not just go to success page if ($active) { $this->_adyenLogger->addAdyenResult("3D secure is active"); // check if it is already processed if ($this->getRequest()->isPost()) { $this->_adyenLogger->addAdyenResult("Process 3D secure payment"); $requestMD = $this->getRequest()->getPost('MD'); $requestPaRes = $this->getRequest()->getPost('PaRes'); $md = $order->getPayment()->getAdditionalInformation('md'); if ($requestMD == $md) { $order->getPayment()->setAdditionalInformation('paResponse', $requestPaRes); try { /** * Magento should allow this. * https://github.com/magento/magento2/issues/5819 */ // $result = $order->getPayment()->getMethodInstance()->executeCommand( // 'authorise_3d', // ['payment' => $order->getPayment(), 'amount' => $order->getGrandTotal()] // ); // old fashion way: $result = $this->_authorise3d($order->getPayment()); } catch (\Exception $e) { $this->_adyenLogger->addAdyenResult("Process 3D secure payment was refused"); $result = 'Refused'; } $this->_adyenLogger->addAdyenResult("Process 3D secure payment result is: " . $result); // check if authorise3d was successful if ($result == 'Authorised') { $order->addStatusHistoryComment(__('3D-secure validation was successful'))->save(); $this->_redirect('checkout/onepage/success'); } else { $order->addStatusHistoryComment(__('3D-secure validation was unsuccessful.'))->save(); $this->_adyenHelper->cancelOrder($order); $this->messageManager->addErrorMessage("3D-secure validation was unsuccessful"); // reactivate the quote $session = $this->_getCheckout(); // restore the quote $session->restoreQuote(); $this->_redirect('checkout/cart'); } } } else { $this->_adyenLogger->addAdyenResult("Customer was redirected to bank for 3D-secure validation."); $order->addStatusHistoryComment(__('Customer was redirected to bank for 3D-secure validation.'))->save(); $this->_view->loadLayout(); $this->_view->getLayout()->initMessages(); $this->_view->renderLayout(); } } else { $this->_redirect('checkout/onepage/success/'); } }