-1

我已经能够开发一个模块,在单击 PlaceOrder 按钮后将客户重定向到支付网关(外部 url)。在支付网关上完成交易后,我重定向到 Magento 上的控制器,这使我可以获取交易状态并安全地保存到自定义表。保存后,我重定向到checkout_onepage_success.xml并包含了我的 template="Vendor_Module::checkout/success.phtml" 但我不断收到错误消息-

1 exception(s): Exception #0 (Magento\Framework\Exception\InputException): Id required

4

1 回答 1

0

如果您正在覆盖 Onepage 成功控制器并实现您的自定义逻辑,在这种情况下,您将不会在成功操作控制器中调度的“checkout_onepage_controller_success_action”事件中获得 LastOrderId。

这就是为什么它会抛出“需要 Id”输入异常。

避免覆盖 Onepage 控制器操作

<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) {

        }
    }

希望,它将解决您的问题,因为我遇到了同样的错误,并且通过这种方法为我解决了

错误的屏幕截图

于 2018-05-11T13:48:17.970 回答