Корзина Prestashop и срок службы заказа, как «подтвердить» корзина и пусть она станет заказом из внешнего метода оплаты

Добрый день всем. Я разрабатываю платежный модуль на Prestashop 1.7.
процесс оплаты является внешним, и перед перенаправлением мне пришлось сделать POST на их сервере, чтобы создать токен, затем перенаправить на них и «подождать», пока пользователь вернется в магазин.

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

1) пользователь заходит на страницу оформления заказа (у него есть корзина, но нет заказа)

2) пользователь выбирает способ оплаты.

3) после нажатия кнопки пользователь отправляется на контроллер «подготовка» (все еще есть корзина и нет заказа)

4) фронт-контроллер, называемый «подготовкой», выполнит POST для шлюза оплаты и с ответом перенаправит пользователя на его шлюз (и я передам ему «returnUrl», указывающий на мой контроллер «подтверждения»).

5) пользователь находится на своем шлюзе, он будет делать некоторые вещи шлюза.

6) пользователь отправляется обратно в Prestashop, по returnUrl, который я дал ранее, некоторые данные будут прикреплены к этому.

7) вот это моя забота:
Чтобы подтвердить заказ, я должен перенаправить пользователя на:

Tools::redirect('index.php?controller=order-confirmation&id_cart='.$cart->id.'&id_module='.$this->module->id.'&id_order='.$this->module->currentOrder.'&key='.$customer->secure_key);

но на самом деле у меня нет права «id_order»? Я не подтвердил корзину и превратил ее в заказ еще … верно?

Должен ли я сделать:

$this->module->validateOrder($cart->id, Configuration::get('PS_OS_BANKWIRE'), $total, $this->module->displayName, NULL, $mailVars, (int)$currency->id, false, $customer->secure_key);

перед перенаправлением пользователя на заказ-подтверждение?
Это все правда, или я ничего не понял о превращении корзины в заказ?

заранее спасибо.

0

Решение

Да ты должен позвонить validateOrder() способ превратить корзину в порядок.

На шаге 4 вы проходите redirectUrl на ваш собственный контроллер в магазине, который подтвердит заказ и затем перенаправит на страницу успеха.

Вы должны быть осторожны с манипуляциями с корзиной, пока пользователь находится на странице платежного шлюза. Когда пользователь перенаправлен на платежный шлюз, корзина все еще активна, и он может открыть магазин на другой вкладке и управлять своей корзиной (добавить, удалить, выбрать другую доставку и т. Д.), А затем нажать Pay Кнопка на странице шлюза, поэтому, прежде чем перенаправить пользователя на платежный шлюз, убедитесь, что вы храните общую стоимость корзины в своей пользовательской таблице, а перед подтверждением заказа убедитесь, что сумма равна или я думаю, что Prestashop сделает это для ты в деле validateOrder() сравнивая сумму в корзине и оплаченную сумму, и установите Payment error статус заказа, если суммы не совпадают (я давно не обращался к prestashop, поэтому не уверен).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector