Корзина Prestashop и жизненный цикл заказа, как «подтвердить» корзину и сделать так, чтобы она стала заказом из внешнего метода оплаты - PullRequest
0 голосов
/ 14 декабря 2018

Добрый день всем.Я разрабатываю платежный модуль на 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);

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

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

1 Ответ

0 голосов
/ 14 декабря 2018

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

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

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

...