我正在建立一个自定义模块在商店前,我需要执行付款后,接受和电子邮件已经发送。在mymodule.php中,我有以下钩子:
public function hookActionValidateOrder($params) {
$order = $params['order'];
$customer = $params['customer'];
$valuesToinsert="";
$attrValue=array();
etc...
}通常都会执行。我试过actionOrderStatusPostUpdate,actionPaymentConfirmation,但是似乎没有一个被调用。我不知道它是否相关,但我使用的是opc模块和产品是免费的。
发布于 2016-12-16 13:54:00
正如您在问题中提到的,您正在尝试的订单是免费的,在这种情况下,任何在付款时调用的钩子都不会调用。
因此,钩子(即actionOrderStatusPostUpdate,actionPaymentConfirmation,hookActionObjectOrderAddAfter等)将永远不会被调用,因为它们是从PaymentModule.php类调用的,而且在自由订单的情况下根本不会调用它们。
不幸的是,当一个免费订单被放置时,没有调用钩子。如果您想对免费订单采取任何操作,那么只能通过在FreeOrder中重写ParentOrderController.php类或_checkFreeOrder()函数来做到这一点
发布于 2016-12-15 18:35:03
这个钩子是在客户确认他的手推车后下订单时调用的。触发这个钩子的函数是来自PaymentModule类的PaymentModule。当客户单击结帐中的en确认按钮时,由支付模块调用。每个支付模块都应该在某个时刻调用此功能。但是,如果您没有支付模块在您的特定过程中,由于免费的产品,这个钩子可能永远不会被调用。无论如何,您可以订阅actionObjectOrderAddAfter钩子或类似的命令,以便在下新订单时得到通知:
public function hookActionObjectOrderAddAfter($params)
{
//$params['object'] contains specific object, in this case your Order object
}如果您需要有关订单状态的信息,您也可以订阅钩子actionOrderHistoryAddAfter。钩子actionOrderStatusUpdate仅在changeIdOrderState函数中触发。如果由于某种原因,订单状态发生了更改,而没有调用此函数,那么您将错过通知。
祝好运
发布于 2020-03-02 17:14:14
老帖子,但想放弃评论,以帮助别人。此函数在订单提交后调用,并得到确认页面,无论是否提交了付款:
public function hookDisplayOrderConfirmation($params) { }https://stackoverflow.com/questions/41170756
复制相似问题