/** * Retrieve params and put javascript into iframe * * @return \Magento\Framework\View\Result\Layout */ public function execute() { $redirectParams = $this->getRequest()->getParams(); $params = []; if (!empty($redirectParams['success']) && isset($redirectParams['x_invoice_num']) && isset($redirectParams['controller_action_name'])) { $params['redirect_parent'] = $this->helper->getSuccessOrderUrl($redirectParams); $directpostSession = $this->_objectManager->get('Magento\\Authorizenet\\Model\\Directpost\\Session'); $directpostSession->unsetData('quote_id'); //cancel old order $oldOrder = $this->_getOrderCreateModel()->getSession()->getOrder(); if ($oldOrder->getId()) { /* @var $order \Magento\Sales\Model\Order */ $order = $this->_objectManager->create('Magento\\Sales\\Model\\Order')->loadByIncrementId($redirectParams['x_invoice_num']); if ($order->getId()) { $oldOrder->cancel()->save(); $order->save(); $this->_getOrderCreateModel()->getSession()->unsOrderId(); } } //clear sessions $this->_getSession()->clearStorage(); $directpostSession->removeCheckoutOrderIncrementId($redirectParams['x_invoice_num']); $this->_objectManager->get('Magento\\Backend\\Model\\Session')->clearStorage(); $this->messageManager->addSuccess(__('You created the order.')); } if (!empty($redirectParams['error_msg'])) { $cancelOrder = empty($redirectParams['x_invoice_num']); $this->_returnQuote($cancelOrder, $redirectParams['error_msg']); } $this->_coreRegistry->register(Iframe::REGISTRY_KEY, array_merge($params, $redirectParams)); return $this->resultLayoutFactory->create(); }
public function testGetSuccessOrderUrl() { $orderMock = $this->getMock('Magento\\Sales\\Model\\Order', ['loadByIncrementId', 'getId', '__wakeup'], [], '', false); $orderMock->expects($this->once())->method('loadByIncrementId')->with('invoice number')->willReturnSelf(); $orderMock->expects($this->once())->method('getId')->willReturn('order id'); $this->orderFactoryMock->expects($this->once())->method('create')->willReturn($orderMock); $this->urlBuilderMock->expects($this->once())->method('getUrl')->with('sales/order/view', ['order_id' => 'order id'])->willReturn('some value'); $this->assertEquals('some value', $this->dataHelper->getSuccessOrderUrl(['x_invoice_num' => 'invoice number', 'some param'])); }