VerifyCsrfToken.php 第 67 行中的 TokenMismatchException:同时将 paytm 与 laravel 5.3 集成
Posted
技术标签:
【中文标题】VerifyCsrfToken.php 第 67 行中的 TokenMismatchException:同时将 paytm 与 laravel 5.3 集成【英文标题】:TokenMismatchException in VerifyCsrfToken.php line 67: while integrating paytm with laravel 5.3 【发布时间】:2018-05-11 13:44:28 【问题描述】:token mismatch exception in verifyCsrfToken
我通过在 laravel 5.3 中引用“https://github.com/anandsiddharth/laravel-paytm-wallet”来集成 paytm,在付款时它重定向到 paytm 站点,当它重定向回我的站点时,它给出错误“TokenMismatchException in VerifyCsrfToken.php line 67”
查看.php
<form action="action('OrderController@order')" method="post" name="payuForm" >
<input type="hidden" name="_token" value=" csrf_token() ">
<input type="hidden" name="firstname" id="firstname" value="$data1->first_name" />
<input type="hidden" name="email" id="email" value="$data1->email" />
<input type="text" name="amount" value="<?php echo $data[0]->cost?>" readonly/>
<input type="text" name="productinfo" value="<?php echo $data[0]->mid?>" readonly />
<input type="text" name="phone" value="$data1->mobile" readonly/>
<center><button class="btn btn-colored btn-theme-colored text-uppercase pay">Pay</button></center>
</form>
控制器.php
<?php
namespace App\Http\Controllers;
use PaytmWallet;
use Illuminate\Http\Request;
use App\EventRegistration;
use Session;
use DB;
class OrderController extends Controller
/**
* Redirect the user to the Payment Gateway.
*
* @return Response
*/
public function register()
return view('register');
/**
* Redirect the user to the Payment Gateway.
*
* @return Response
*/
public function order(Request $request)
$input = $request->all();
//pri($input); die();
$input['order_id'] = str_random(16);
$input['fee'] = $input['amount'];
Session::put('packid', $input['productinfo']);
EventRegistration::create($input);
$payment = PaytmWallet::with('receive');
$payment->prepare([
'order' => $input['order_id'],
'user' => $input['firstname'],
'mobile_number' => $input['phone'],
'email' => $input['email'],
'amount' => $input['fee'],
'callback_url' => url('payment/status')
]);
//pri($payment);exit;
return $payment->receive();
/**
* Obtain the payment information.
*
* @return Object
*/
public function paymentCallback()
$transaction = PaytmWallet::with('receive');
$response = $transaction->response();
$order_id = $transaction->getOrderId();
if($transaction->isSuccessful())
dd('payment Done');
else if($transaction->isFailed())
dd('payment Failed');
Routes.php
Route::get('event-registration', 'OrderController@register');
Route::post('payment', 'OrderController@order');
Route::post('payment/status', 'OrderController@paymentCallback');
【问题讨论】:
你用的是什么中间件? 【参考方案1】:嘿@Deepak Patel 我搜索了大量与您的问题相关的信息。我为您找到了一个解决方案。 5.1 版 Laravel 的 VerifyCsrfToken 中间件允许路由。您需要在 App\Http\MiddlewareVerifyCsrfToken 类中将路由添加到 $except 数组:
<?php namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
protected $except = [
'your-route-name/*',
];
它在 laravel 中为特定路线禁用 csrf。希望它能正常工作。
【讨论】:
这是我的荣幸@DeepakPatel【参考方案2】:我也收到此错误,但问题已解决。
php artisan 缓存:清除。
清除缓存和 cookie 浏览器。
使用私人浏览器 (Mozilla) / 隐身窗口 (Chrome)
打开您的表单/页面,然后提交。
希望这对你有用。
【讨论】:
【参考方案3】:添加/
以不通过现有网址附加网址
Route::get('/event-registration', 'OrderController@register');
Route::post('/payment', 'OrderController@order');
Route::post('/payment/status', 'OrderController@paymentCallback');
并使用/payment
作为表单标记中的操作,因为您已经为此'OrderController@order'
创建了路由并且没有使用任何命名路由。
<form action="/payment" method="post" name="payuForm" >
还要检查你在路由中请求的数据
Route::post('payment', function(Illuminate\Http\Request $request)
return dd($request->all());
);
【讨论】:
按照您的建议进行了更改@user2486以上是关于VerifyCsrfToken.php 第 67 行中的 TokenMismatchException:同时将 paytm 与 laravel 5.3 集成的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 中的 VerifyCsrfToken.php 第 53 行中的 TokenMismatchException
VerifyCsrfToken.php 中的 TokenMismatchException
Laravel VerifyCsrfToken.php 第 53 行随机帖子
VerifyCsrfToken.php 第 53 行中的 TokenMismatchException:(Firefox 浏览器)在 laravel 5.1 中?
Laravel 5 Auth Post Submit - VerifyCsrfToken.php 第 46 行中的 TokenMismatchException