为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
紫衣仙女 2021-07-09 17:05:44
如何防止 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 文档中提供了有关如何实现重定向的更多信息

查看完整回答
反对 回复 2021-07-16
?
呼如林

TA贡献1798条经验 获得超3个赞

我做了一些更多的搜索(stripe api),发现你可以使用 callend an idempotent request 来解决双重支付问题。我找到了一个 laravel 库,它通过中间件来处理这个问题。

它基本上是发送一个(用户)唯一键并将响应存储在缓存中,如果在接下来的 24 小时内使用相同的(用户)唯一键,浏览器将发送缓存的响应。


查看完整回答
反对 回复 2021-07-16
  • 2 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信