laravel 防止在电子商务中下订单后返回
laravel prevent go back after order placed in ecommerce
如何防止 Laravel 页面在下订单后返回以避免重复付款。我有很多相关的答案,但 none 对我有用。
我尝试制作中间件 class 并调用 header 代码
并从路由文件中调用它
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');
然后我在这样的路线中调用了 class:
Route::group(['middleware' => 'prevent-order-back'],function(){
Auth::routes();
//Route::get('/home', 'HomeController@index');
Route::post('/place_order', 'OrdersController@place_order');
});
我正在使用 Laravel 5.5
在 OrdersController 的 place_order 函数中的代码后添加以下内容可能会解决您的问题:
return redirect(view('<path to order placed page or index>'))
。
使用来自控制器的重定向可防止浏览器再次发送数据。
有关如何实施重定向的更多信息,请参阅 Laravel documentation
我做了更多搜索(条纹 api),发现您可以使用调用幂等请求的东西来解决双重支付问题。我发现 a laravel library 通过中间件处理这个问题。
它基本上是发送一个(用户)唯一密钥并将响应存储在缓存中,如果在接下来的 24 小时内使用相同的(用户)唯一密钥,浏览器将发送缓存的响应。
如何防止 Laravel 页面在下订单后返回以避免重复付款。我有很多相关的答案,但 none 对我有用。
我尝试制作中间件 class 并调用 header 代码
并从路由文件中调用它
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');
然后我在这样的路线中调用了 class:
Route::group(['middleware' => 'prevent-order-back'],function(){
Auth::routes();
//Route::get('/home', 'HomeController@index');
Route::post('/place_order', 'OrdersController@place_order');
});
我正在使用 Laravel 5.5
在 OrdersController 的 place_order 函数中的代码后添加以下内容可能会解决您的问题:return redirect(view('<path to order placed page or index>'))
。
使用来自控制器的重定向可防止浏览器再次发送数据。
有关如何实施重定向的更多信息,请参阅 Laravel documentation
我做了更多搜索(条纹 api),发现您可以使用调用幂等请求的东西来解决双重支付问题。我发现 a laravel library 通过中间件处理这个问题。
它基本上是发送一个(用户)唯一密钥并将响应存储在缓存中,如果在接下来的 24 小时内使用相同的(用户)唯一密钥,浏览器将发送缓存的响应。