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

时间:2019-05-28 14:42:18

标签: php laravel e-commerce

如何防止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 个答案:

答案 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小时内使用了相同的(用户)唯一密钥,浏览器将发送缓存的响应。