Я разрабатываю модуль, который после состояния «Платеж принят» выполняет собственный процесс и, если все в порядке, меняет состояние заказа на «Отправлено». Для этого я использую hookActionOrderStatusUpdate:
public function hookActionOrderStatusUpdate($params)
{
if($params['newOrderStatus']->id == 2)
{
if(!$this->doSomething())
return false;
}
return /*function for changing order's state*/;
}
Но проблема в том, что новый статус заказа изменяется до «Платеж принят».
Пример:
Кто-нибудь знает, как решить эту проблему?
П.С. попробовал hookActionOrderStatusPostUpdate. PS 1.6.0.9
Пожалуйста, попробуй displayOrderConfirmation а также displayPaymentReturn крючки. Эти крючки получают детали заказа в переменной params после оплаты.
У меня была похожая проблема, и я использовал комбинацию hookActionOrderStatusUpdate
а также hookActionOrderHistoryAddAfter
,
Причина в том, что hookActionOrderHistoryAddAfter
действительно может добавить другой статус после «оплаченного» статуса. А также hookActionOrderStatusUpdate
добавляет ее перед «отправкой», но hookActionOrderHistoryAddAfter
не знает о статусе, который будет установлен.
Так это выглядит так:
class MikolaHooks extends Module
{
public $newOrderStatusId = NULL;
public function hookActionOrderStatusUpdate($params) {
$this->newOrderStatusId = $params['newOrderStatus']->id;
}
public function hookActionOrderHistoryAddAfter($params) ....