Я работаю над модулем оплаты в presta 1.6. Это почти сделано, но я остановился на шаге подтверждения заказа. Если я перенаправляю на страницу подтверждения сразу после validateOrder (), то все работает, история заказов отображается, и заказ имеет правильный статус, но …
наконец, я хочу использовать платежный шлюз на внешнем домене. Я хочу перенаправить на URL с параметрами, он будет содержать (закодирован в токене) URL для возврата presta в случае успешного платежа, но …
Когда я использую URL, как подтверждение заказа, сессия истекла, и корзина пуста, поэтому заказ не может быть подтвержден.
$ success_url = PS_BASE_URI. ‘order-translation.php? id_cart =’.
$ id_cart. ‘&id;_module = ‘. intval ($ tpg_deposit-> id). ‘&id;_order = ‘.
intval ($ tpg_deposit-> currentOrder);
Этот URL-адрес работает нормально, но только когда я не покидаю домен prestashop. Когда я перенаправляю на платежную веб-страницу, то возвращаюсь к presta по этому URL-адресу, возникает ошибка presta 404, и корзина пуста.
«Эта страница недоступна»
Что я не прав?
Первым делом, которое я вижу, возможно неправильный возврат URL, ваша версия будет выглядеть так:
/order_confirmation.php?{parameters}
там должно быть что-то вроде:
$success_url = $this->context->shop->getBaseUrl() . _MODULE_DIR_. $this->name . 'order_confirmation.php?{parameters}'
// will create
// http://yourdomain.com/modules/yourmodule/order_confirmation.php?{parameters}
ValidateOrder () создает ордер и удаляет сессию корзины. Если вы используете внешний домен, используйте OrderStatus, например «Ожидание платежа», и обновляйте его, когда пользователь вернется.
Это может быть немного поздно, но как насчет:
$success_url = Tools::redirectLink(PS_BASE_URI . 'order-confirmation.php?id_cart=' . $id_cart . '&id;_module=' . intval($tpg_deposit->id) . '&id;_order=' . intval($tpg_deposit->currentOrder) . '&key=' . $this->context->customer->secure_key);