如何防止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
答案 0 :(得分:0)
在OrdersController的place_order函数中的代码之后添加以下内容可能会解决您的问题:
$username = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
。
使用来自控制器的重定向可防止浏览器再次发送数据。
Laravel documentation
答案 1 :(得分:0)
我做了一些进一步的搜索(条带化api),发现您可以使用callend幂等请求来解决重复付款问题。我发现a laravel library通过中间件来处理。
基本上是发送一个(用户)唯一密钥并将响应存储在缓存中,如果在接下来的24小时内使用了相同的(用户)唯一密钥,浏览器将发送缓存的响应。