Prestashop cart и order lifesycle, как "подтвердить" корзину и позволить ей стать заказом, поступающим из внешнего способа оплаты

Prestashop cart и order lifesycle, как "подтвердить" корзину и позволить ей стать заказом, поступающим из внешнего способа оплаты

14.12.2018 06:25:01 Просмотров 49 Источник

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

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

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

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

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

4) передний контроллер под названием " Подготовка "выполнит сообщение на платежный шлюз и с ответом перенаправит пользователя на свой шлюз (и я передам им" 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);

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

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

У вопроса есть решение - Посмотреть?

Ответы - Prestashop cart и order lifesycle, как "подтвердить" корзину и позволить ей стать заказом, поступающим из внешнего способа оплаты / Prestashop cart and order lifesycle, how to "confirm" a cart and let it become an order coming from external payment method

Является ответом!
TheDrot

14.12.2018 08:15:06

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

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

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

Закрыть X