我已经能够开发一个模块,在单击PlaceOrder按钮后将客户重定向到支付网关(外部URL)。在支付网关上完成交易后,我重定向到Magento上的控制器,这使我可以获得交易状态并安全地使用自定义表。保存后,我重定向到checkout_onepage_success.xml
并包含我的模板=" Vendor_Module :: checkout / success.phtml"但我一直收到错误 -
1 exception(s): Exception #0 (Magento\Framework\Exception\InputException): Id required
答案 0 :(得分:0)
如果要覆盖Onepage成功控制器并实现自定义逻辑,在这种情况下,您将不会在成功操作控制器中调度的'checkout_onepage_controller_success_action'事件中获得LastOrderId。
这就是为什么它会抛出'Id required'输入异常。
避免覆盖单页控制器操作
<preference for="Magento\Checkout\Controller\Onepage\Success" type="Arman\Checkout\Controller\Onepage\Success" />
不要在成功控制器中集成您特定的代码,而是尝试使用观察者checkout_onepage_controller_success_action,它将在成功动作控制器中调度并在观察者中实现您的逻辑。
public function execute(\Magento\Framework\Event\Observer $observer)
{
try {
$orderIds = $observer->getEvent()->getOrderIds();
//enter code here
} catch (Exception $e) {
}
}
希望,它会解决你的问题,因为我得到了同样的错误,并且用这种方法为我解决了