如何防止 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 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
在place_order功能在OrdersController的代码之后添加以下可能会解决你的问题:return redirect(view('<path to order placed page or index>'))
。使用来自控制器的重定向可防止浏览器再次发送数据。Laravel 文档中提供了有关如何实现重定向的更多信息
呼如林
TA贡献1798条经验 获得超3个赞
我做了一些更多的搜索(stripe api),发现你可以使用 callend an idempotent request 来解决双重支付问题。我找到了一个 laravel 库,它通过中间件来处理这个问题。
它基本上是发送一个(用户)唯一键并将响应存储在缓存中,如果在接下来的 24 小时内使用相同的(用户)唯一键,浏览器将发送缓存的响应。
- 2 回答
- 0 关注
- 206 浏览
添加回答
举报
0/150
提交
取消