如何在 prestashop 付款后调用功能?
How to call function after payment in prestashop?
我正在 prestashop 中构建自定义模块,我需要在接受付款和发送电子邮件后执行一些操作。在 mymodule.php 我有以下钩子:
public function hookActionValidateOrder($params) {
$order = $params['order'];
$customer = $params['customer'];
$valuesToinsert="";
$attrValue=array();
etc...
}
正常执行。我尝试了 actionOrderStatusPostUpdate、actionPaymentConfirmation,但似乎调用了其中的 none。我不知道是否相关,但我正在使用 opc 模块并且该产品是免费的。
当客户确认他的购物车后下订单时调用此挂钩。触发这个钩子的函数是 validateOrder
from PaymentModule
class。当客户在结帐时单击确认按钮时,由支付模块调用。每个支付模块都应该在某个时刻调用这个函数。但是,如果由于免费产品而在您的特定流程中没有支付模块,则可能永远不会调用此挂钩。
无论如何,您可以订阅 actionObjectOrderAddAfter
钩子或类似的钩子,以便在下新订单时得到通知:
public function hookActionObjectOrderAddAfter($params)
{
//$params['object'] contains specific object, in this case your Order object
}
如果您需要有关订单状态的信息,您也可以订阅挂钩 actionOrderHistoryAddAfter
。 Hook actionOrderStatusUpdate
仅在 changeIdOrderState
函数内部触发。如果由于某种原因订单状态发生变化而没有调用此函数,您将错过通知。
祝你好运
正如您在问题中提到的,您尝试的订单是免费的,在这种情况下,任何在付款时调用的挂钩都不会调用。
因此挂钩(即 actionOrderStatusPostUpdate、actionPaymentConfirmation、hookActionObjectOrderAddAfter 等)将永远不会被调用,因为它们是从 PaymentModule.php class 调用的,并且在免费的情况下根本不会被调用订单。
遗憾的是,没有在下免费订单时调用的挂钩。如果您想对免费订单采取任何行动,那么您只能通过覆盖 ParentOrderController.php
中的 FreeOrder class 或 _checkFreeOrder() 函数来实现
旧 post,但想发表评论以帮助他人。此函数在提交订单后调用,他们会收到确认页面,无论是否已提交付款:
public function hookDisplayOrderConfirmation($params) { }
我正在 prestashop 中构建自定义模块,我需要在接受付款和发送电子邮件后执行一些操作。在 mymodule.php 我有以下钩子:
public function hookActionValidateOrder($params) {
$order = $params['order'];
$customer = $params['customer'];
$valuesToinsert="";
$attrValue=array();
etc...
}
正常执行。我尝试了 actionOrderStatusPostUpdate、actionPaymentConfirmation,但似乎调用了其中的 none。我不知道是否相关,但我正在使用 opc 模块并且该产品是免费的。
当客户确认他的购物车后下订单时调用此挂钩。触发这个钩子的函数是 validateOrder
from PaymentModule
class。当客户在结帐时单击确认按钮时,由支付模块调用。每个支付模块都应该在某个时刻调用这个函数。但是,如果由于免费产品而在您的特定流程中没有支付模块,则可能永远不会调用此挂钩。
无论如何,您可以订阅 actionObjectOrderAddAfter
钩子或类似的钩子,以便在下新订单时得到通知:
public function hookActionObjectOrderAddAfter($params)
{
//$params['object'] contains specific object, in this case your Order object
}
如果您需要有关订单状态的信息,您也可以订阅挂钩 actionOrderHistoryAddAfter
。 Hook actionOrderStatusUpdate
仅在 changeIdOrderState
函数内部触发。如果由于某种原因订单状态发生变化而没有调用此函数,您将错过通知。
祝你好运
正如您在问题中提到的,您尝试的订单是免费的,在这种情况下,任何在付款时调用的挂钩都不会调用。
因此挂钩(即 actionOrderStatusPostUpdate、actionPaymentConfirmation、hookActionObjectOrderAddAfter 等)将永远不会被调用,因为它们是从 PaymentModule.php class 调用的,并且在免费的情况下根本不会被调用订单。
遗憾的是,没有在下免费订单时调用的挂钩。如果您想对免费订单采取任何行动,那么您只能通过覆盖 ParentOrderController.php
中的 FreeOrder class 或 _checkFreeOrder() 函数来实现旧 post,但想发表评论以帮助他人。此函数在提交订单后调用,他们会收到确认页面,无论是否已提交付款:
public function hookDisplayOrderConfirmation($params) { }