laravel 防止在电子商务中下订单后返回

如何防止 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


紫衣仙女
浏览 207回答 2
2回答

繁华开满天机

在place_order功能在OrdersController的代码之后添加以下可能会解决你的问题:return redirect(view('<path to order placed page or index>'))。使用来自控制器的重定向可防止浏览器再次发送数据。Laravel 文档中提供了有关如何实现重定向的更多信息

呼如林

我做了一些更多的搜索(stripe api),发现你可以使用 callend an idempotent request 来解决双重支付问题。我找到了一个 laravel 库,它通过中间件来处理这个问题。它基本上是发送一个(用户)唯一键并将响应存储在缓存中,如果在接下来的 24 小时内使用相同的(用户)唯一键,浏览器将发送缓存的响应。
打开App,查看更多内容
随时随地看视频慕课网APP