PrestaShop - подтвердите оплату и примите заказ

Я работаю над модулем оплаты в presta 1.6. Это почти готово, но я остановился на шаге подтверждения заказа. Если я перенаправляю на страницу подтверждения сразу после validateOrder (), тогда все работает, отображается история заказов и статус заказа правильный, но ...

наконец, я хочу использовать платежный шлюз на внешнем домене. Я хочу перенаправить на URL-адрес с параметрами, он будет содержать (закодированный в токене) URL-адрес для поддержки presta в случае успешной оплаты, но ...

когда я использую URL-адрес, например, подтверждение заказа, сеанс истек, а корзина пуста, поэтому заказ не может быть подтвержден.

$ success_url = PS_BASE_URI. 'подтверждение-заказа.php? id_cart ='. $ id_cart. '_module ='. intval ($ tpg_deposit-> id). '_order ='. intval ($ tpg_deposit-> currentOrder);

Этот URL-адрес работает нормально, но ТОЛЬКО когда я не выхожу из домена prestashop. Когда я перенаправляюсь на веб-страницу оплаты, а затем обратно на presta по этому URL-адресу, возникает ошибка presta 404, а корзина пуста.

"Эта страница недоступна"

Что я не так?


person Bejkrools    schedule 16.09.2015    source источник


Ответы (3)


Это может быть немного поздно, но как насчет:

$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);
person Aurora    schedule 24.08.2017

Первое, что я вижу, возможно, неправильный 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}
person Serge P    schedule 17.09.2015

ValidateOrder () создает сеанс заказа и удаления корзины. Если вы используете внешний домен, используйте OrderStatus, например «Ожидает платежа», и обновите его, когда пользователь вернется.

person Garry Cooper    schedule 19.09.2015