laravel предотвращает возврат после заказа, размещенного в электронной коммерции - PullRequest
0 голосов
/ 28 мая 2019

Как предотвратить возврат страницы Laravel после размещения заказа, чтобы не сделать двойной платеж. У меня есть много связанных ответов, но ни один из них не работает со мной.

Я пытался создать класс промежуточного программного обеспечения и код заголовка вызова

и вызвал его из файла маршрута


return $response->header('Cache-Control','no-store, nocache, no-store, max-age=0, must-revalidate')
->header('Pragma','no-cache')
->header('Expires','Sun, 02 Jan 1990 00:00:00 GMT')
->header('Cache-Control',' post-check=0, pre-check=0, false');

и тогда я назвал класс в маршруте так:

Route::group(['middleware' => 'prevent-order-back'],function(){
        Auth::routes();
        //Route::get('/home', 'HomeController@index');
        Route::post('/place_order', 'OrdersController@place_order');
    });

Я использую Laravel 5.5

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я провел еще несколько поисков (stripe api) и обнаружил, что вы можете использовать что-то, вызывающее идемпотентный запрос, чтобы решить проблему двойной оплаты.Я нашел библиотеку laravel , которая обрабатывает это через промежуточное ПО.

Она в основном отправляет (пользовательский) уникальный ключ и сохраняет ответ в кеше, браузер отправит кешированный ответ, еслиЭтот же (пользовательский) уникальный ключ используется в следующие 24 часа.

0 голосов
/ 28 мая 2019

Добавление следующего кода после кода в функции place_order в OrdersController может решить вашу проблему:
return redirect(view('<path to order placed page or index>')).использование перенаправления с контроллера предотвращает повторную отправку данных браузером.больше информации о том, как реализовать перенаправления, доступно в документации Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...