TokenMismatchException в VerifyCsrfToken.php строка 67: при интеграции PayTM с Laravel 5.3

исключение несоответствия токена в verifyCsrfToken

Я интегрировал Paytm, ссылаясь наhttps://github.com/anandsiddharth/laravel-paytm-wallet«с laravel 5.3 и при выполнении платежа он перенаправляет на сайт paytm, а когда он перенаправляет обратно на мой сайт, выдает ошибку» TokenMismatchException в строке 67 VerifyCsrfToken.php «

view.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>

controller.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');

3

Решение

Привет @Deepak Patel Я ищу много информации, связанной с вашим вопросом. Я нашел одно решение для вас.
Версия 5.1. Промежуточное программное обеспечение VerifyCsrfToken компании Laravel позволяет выполнять маршрутизацию. Вам необходимо добавить маршруты в массив $, кроме массива, в классе App \ Http \ MiddlewareVerifyCsrfToken:

<?php namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'your-route-name/*',
];
}

Это отключить CSRF в Laravel для конкретного маршрута. Надеюсь, это работает.

5

Другие решения

Я также получаю эту ошибку, но я решил проблему.

  1. php artisan cache: очистить
  2. Очистить кэш & браузер куки.
  3. Использование приватного браузера (Mozilla) / Окна инкогнито (Chrome)
  4. Откройте форму / страницу и отправьте.

    надеюсь, что эта работа для вас.

3

добавлять / не добавлять URL к существующему URL

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());
});
0
По вопросам рекламы [email protected]