Php Prestashop-付款生效时的变更单状态
付款生效后,订单状态变为“付款已生效”(“法语中的Paiement accepté”)。我想在验证付款时设置另一个状态,以便历史记录显示以下内容:Php Prestashop-付款生效时的变更单状态,php,e-commerce,hook,prestashop,Php,E Commerce,Hook,Prestashop,付款生效后,订单状态变为“付款已生效”(“法语中的Paiement accepté”)。我想在验证付款时设置另一个状态,以便历史记录显示以下内容: Current status : My personnal status History : My personnal status Payment validated 为此,我使用钩子actionOrderStatusPostUpdate。这是我的代码: public function hookActionOrderStatusPostUpdat
Current status : My personnal status
History :
My personnal status
Payment validated
为此,我使用钩子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
我应该怎么做才能使我的个人状态显示为最后一个状态?我认为它可以在其他钩子上工作:actionOrderStatusUpdate钩子ActionOrderStatusPostUpdate钩子调用是由changeIdOrderState执行的,但添加到order历史记录表是在调用changeIdOrderState之后执行的,如中所示 您需要将模块绑定到一个经典的钩子上,比如hookActionObjectOrderHistoryAddAfter
致以最诚挚的问候我认为这是您应该用来在付款后更改订单状态的方法。当状态更改或状态更改时,将调用这些挂钩
$history = new OrderHistory();
$history->id_order = (int)$id_order;
$history->changeIdOrderState($status_id, (int)$id_order);
$history->addWithemail();
$history->save();
你能给我一些截图吗?我不明白你的意思。截图:。状态“Paiement accepté”(即已验证付款的法语)是最后一次注册。另一个是“Paulle Par LabFablab”,这是我想做的最后一个。这是订单历史页面的截图?正确的?你想要“Paulle Fablab”在“接受接受”之前吗?是的,这就是我想要的。此外,
hookActionObjectOrderHistoryAddAfter
是正确答案。仔细看看这个文档,动态钩子是这样组成的:actionObject+ObjectName+AddAfter
和/或直接查看源代码
$history = new OrderHistory();
$history->id_order = (int)$id_order;
$history->changeIdOrderState($status_id, (int)$id_order);
$history->addWithemail();
$history->save();