Я пытаюсь изменить поведение платежного модуля в Prestashop 1.6.x, чтобы создать квитанцию клиента из источника подтверждения на страницу подтверждения заказа .
Я хотел бы получить предложение относительно наилучшего метода и некоторые рекомендации по его правильному достижению.
В частности, когда пользователь завершает транзакцию с использованием определенного платежного модуля, мне нужно заполнить страницу подтверждения заказа данными POST из внешнего банковского источника , который доступен в функции postProcess()
, чтобы использовать ее в качестве квитанции .
Насколько я понимаю, после оплаты:
модуль проверяет заказ и обрабатывает данные POST внешнего источника с помощью функции PostProcess()
(часть расширенного класса ModuleFrontController
) и находится в файле controllers / front / validation.php.
В пределах PostProcess()
, если внешние данные в порядке (т.е. транзакция одобрена),он перенаправляет к контроллеру подтверждения заказа следующее:
public function postProcess() {
(...)
$somePostData = '';
//this is the variable that is populated from POST data and i need to show in the confirmation.tpl
$somePostData = Tools::getValue('postdata');
Tools::redirect('index.php?controller=order-confirmation&id_cart=' .
$this->context->cart->id . '&id_module=' .
$this->module->id . '&id_order=' .
$this->module->currentOrder . '&key=' .
$customer->secure_key
);
(...)
}
В какой-то момент вызывается hookPaymentReturn()
(находится в основном файле php модуля), который загружает определенный файл шаблона модуля, связанный со страницей подтверждения заказа.
Чтобы показать некоторые переменные через файл tpl, единственное решение, которое я нашел, это использовать smarty переменную непосредственно перед возвратом заполненного tpl, как показано ниже:
public function hookPaymentReturn()
{
if (!$this->active) {
return;
}
//this is the variable that I want to populate from the above-mentioned $somePostData found in postProcess()
$receipt_display = 'some data';
$this->context->smarty->assign('receipt_display', $receipt_display);
return $this->display(__FILE__, 'views/templates/hook/confirmation.tpl');
}
Таким образом, мой вопрос заключается в том, как я могу заполнить $ receive_display данными из $ somePostData, как показано в двух вышеупомянутых разделах кода?
Есть ли другая методология, которую вы могли бы предложить, если приведенный вышеупомянуто неправильно?
Спасибо, mmystery