gpt4 book ai didi

php - Prestashop - 验证付款后更改订单状态

转载 作者:可可西里 更新时间:2023-10-31 22:42:40 25 4
gpt4 key购买 nike

验证付款后,订单状态变为“付款已验证”(法语为“Paiement accepté”)。我想在验证付款时设置另一个状态,因此历史记录将显示以下内容:

Current status : My personnal status
History :
My personnal status
Payment validated

为此,我使用钩子(Hook) actionOrderStatusPostUpdate。这是我的代码:

public function hookActionOrderStatusPostUpdate($aParams) {
$oOrder = new Order($aParams['id_order']);

if($aParams['newOrderStatus']->id == Configuration::get('PS_OS_PAYMENT')) {
$oOrder->setCurrentState(Configuration::get('XXXXXX_STATUS_WAITING'));
$oOrder->save();
}
}

配置值已正确定义。此代码有效,因为我看到状态已更改。但问题是它在更改为“已验证付款”之前发生了变化。我不明白为什么。历史看起来像这样:

Current status : Payment validated
History :
Payment validated
My personnal status

我应该怎么做才能让我的个人状态显示为最后一个状态?

最佳答案

hookActionOrderStatusPostUpdate Hook 调用由 changeIdOrderState 进行,但添加到 order_history 表是在调用 changeIdOrderState 之后进行的,如 https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/controllers/admin/AdminOrdersController.php#L521-L542

您更需要将您的模块绑定(bind)到一个经典的 Hook 上,例如 hookActionObjectOrderHistoryAddAfter https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/classes/ObjectModel.php#L535-L537

public function hookActionObjectOrderHistoryAddAfter($params) {
$orderHistory = $params['object'];

if($orderHistory->id_order_state == Configuration::get('PS_OS_PAYMENT')) {
$oOrder->setCurrentState(Configuration::get('XXXXXX_STATUS_WAITING'));
$oOrder->save();
}

最好的问候

关于php - Prestashop - 验证付款后更改订单状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28408612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com