coreRegistry = $coreRegistry; $this->payment = $payment; $this->session = $session; $this->storeManager = $storeManager; } /** * Save order into registry to use it in the overloaded controller. * * @param \Magento\Framework\Event\Observer $observer * @return $this */ public function execute(\Magento\Framework\Event\Observer $observer) { /* @var $order Order */ $order = $this->coreRegistry->registry('directpost_order'); if (!$order || !$order->getId()) { return $this; } $payment = $order->getPayment(); if (!$payment || $payment->getMethod() != $this->payment->getCode()) { return $this; } $result = $observer->getData('result')->getData(); if (!empty($result['error'])) { return $this; } // if success, then set order to session and add new fields $this->session->addCheckoutOrderIncrementId($order->getIncrementId()); $this->session->setLastOrderIncrementId($order->getIncrementId()); $requestToAuthorizenet = $payment->getMethodInstance() ->generateRequestFromOrder($order); $requestToAuthorizenet->setControllerActionName( $observer->getData('action') ->getRequest() ->getControllerName() ); $requestToAuthorizenet->setIsSecure( (string)$this->storeManager->getStore() ->isCurrentlySecure() ); $result[$this->payment->getCode()] = ['fields' => $requestToAuthorizenet->getData()]; $observer->getData('result')->setData($result); return $this; } }