formKeyValidator = $formKeyValidator; $this->logger = $logger; $this->agreementsValidator = $agreementValidator; $this->session = $session; parent::__construct( $context, $customerSession, $customerRepository, $accountManagement ); } /** * Overview action * * @return void * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function execute() { if (!$this->formKeyValidator->validate($this->getRequest())) { $this->_forward('backToAddresses'); return; } if (!$this->_validateMinimumAmount()) { return; } try { if (!$this->agreementsValidator->isValid(array_keys($this->getRequest()->getPost('agreement', [])))) { $this->messageManager->addError( __('Please agree to all Terms and Conditions before placing the order.') ); $this->_redirect('*/*/billing'); return; } $payment = $this->getRequest()->getPost('payment'); $paymentInstance = $this->_getCheckout()->getQuote()->getPayment(); if (isset($payment['cc_number'])) { $paymentInstance->setCcNumber($payment['cc_number']); } if (isset($payment['cc_cid'])) { $paymentInstance->setCcCid($payment['cc_cid']); } $this->_getCheckout()->createOrders(); $this->_getState()->setCompleteStep(State::STEP_OVERVIEW); if ($this->session->getAddressErrors()) { $this->_getState()->setActiveStep(State::STEP_RESULTS); $this->_redirect('*/*/results'); } else { $this->_getState()->setActiveStep(State::STEP_SUCCESS); $this->_getCheckout()->getCheckoutSession()->clearQuote(); $this->_getCheckout()->getCheckoutSession()->setDisplaySuccess(true); $this->_redirect('*/*/success'); } } catch (PaymentException $e) { $message = $e->getMessage(); if (!empty($message)) { $this->messageManager->addError($message); } $this->_redirect('*/*/billing'); } catch (\Magento\Checkout\Exception $e) { $this->_objectManager->get( \Magento\Checkout\Helper\Data::class )->sendPaymentFailedEmail( $this->_getCheckout()->getQuote(), $e->getMessage(), 'multi-shipping' ); $this->_getCheckout()->getCheckoutSession()->clearQuote(); $this->messageManager->addError($e->getMessage()); $this->_redirect('*/cart'); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->_objectManager->get( \Magento\Checkout\Helper\Data::class )->sendPaymentFailedEmail( $this->_getCheckout()->getQuote(), $e->getMessage(), 'multi-shipping' ); $this->messageManager->addError($e->getMessage()); $this->_redirect('*/*/billing'); } catch (\Exception $e) { $this->logger->critical($e); try { $this->_objectManager->get( \Magento\Checkout\Helper\Data::class )->sendPaymentFailedEmail( $this->_getCheckout()->getQuote(), $e->getMessage(), 'multi-shipping' ); } catch (\Exception $e) { $this->logger->error($e->getMessage()); } $this->messageManager->addError(__('Order place error')); $this->_redirect('*/*/billing'); } } }