Получил TokenMismatchException в строке VerifyCsrfMiddleware.php 16 laravel 5

Я делаю веб-приложение для электронной коммерции, используя Laravel 5.

Теперь я застрял в интеграции платежей. я использую CCAvenue как моя платежная интеграция, но нет никакой поддержки, предоставляемой самой ccavenue для структуры laravel.

Итак, после небольшого исследования, я получил этот пакет под названием Indipay. Этот пакет работает полностью отлично. Тем не менее, я получаю TokenMismatchException, Хотя транзакция прошла успешно, я получаю уведомление о получении оплаты.

Проверьте изображение ниже:

введите описание изображения здесь

routes.php

Route::post('/store/proceed-to-checkout', 'CheckoutController@proceedToCheckout');
Route::get('/store/thank-you', 'PagesController@getThankYou');

CheckoutController.php

public function proceedToCheckout(Request $request)
{
$orderCode = Order::latest()->limit(1)->first();
$newOrderCode = ($orderCode) ? ++$orderCode->order_code : 'ORD-000000001';

$parameters = [
'merchant_id' => $request->get('merchant_id'),
'currency' => $request->get('currency'),
'redirect_url' => $request->get('redirect_url'),
'cancel_url' => $request->get('cancel_url'),
'language' => 'EN',
'order_id' => $newOrderCode,
'actionId' => $request->get('actionID'),
'TxnType' => $request->get('TxnType'),
'amount' => $request->get('amount'),
'tid' => time().rand(111,999)
];

return Indipay::purchase($parameters);
}

PagesController.php

public function getThankYou(Request $request)
{
$ordCode = Session::get('ordCode');

$response = Indipay::response($request);

dd($response);

//return view('version-seven.pages.thank_you', compact('ordCode'));
}

Kernel.php

<?php namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {

/**
* The application's global HTTP middleware stack.
*
* @var array
*/
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
//'App\Http\Middleware\VerifyCsrfToken',
'App\Http\Middleware\VerifyCsrfMiddleware',
];

/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'admin' => 'App\Http\Middleware\AdminAuthentication',
];

}

В чем может быть возможная проблема? Кто-нибудь может мне помочь с этим ??

Любая помощь высоко ценится. Спасибо.

2

Решение

Хорошо … Я был в такой ситуации. Отключение 'App\Http\Middleware\VerifyCsrfToken' не очень хорошее решение
Лучший способ сделать это — отключить URL-адреса, особенно для тех, кому нужен токен.

 protected $except = [
'transaction-failed/*',
'transaction-successful/*',
'payment-notification/*',

];

Примечание: не забудьте добавить «/ *» в конце URL.

3

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

Добавьте токен csrf в вашу форму.

<input type="hidden" name="_token" value="{{csrf_token()}}"/>
1

Моя ситуация тоже такая же, я занимаюсь разработкой сайта электронной коммерции & используя платежный шлюз Payubiz в Laravel 5.1.

Я также получал то же сообщение об ошибке несоответствия токена. Вместо отключения CSRF я добавил эту строку в форму.

<input type="hidden" name="_token" value="{{csrf_token()}}"/>

Это прекрасно работает для меня без каких-либо ошибок.

1

Я реализовал CCAvenue с Laravel довольно много раз. Это проблема подхода. Вы фактически перенаправляете пользователя на сторонний сайт (в данном случае CCAvenue), и он перенаправляет его в форму вашего приложения в виде запроса POST. Ваше промежуточное ПО токена csrf заблокирует ваш маршрут, так как токена нет. Есть три решения:

  1. Обновить до 5.1 — Вы можете рассмотреть возможность обновления до 5.1, так как у вас будет возможность отключить промежуточное ПО для маршрутов. Затем вы можете отключить токен csrf для маршрута ответа, и он будет работать как шарм. Это рекомендуемый вариант, поскольку его очень легко перейти на 5.1 (требуется около 10-15 минут времени), и у вас будет гораздо больше компонентов 5.1 для использования в вашем приложении.
  2. Отключите промежуточное ПО токена csrf для всех ваших почтовых маршрутов, и это будет работать.
  3. Передайте свой токен csrf в переменную параметра CCAvenue (не рекомендуется)
0

У вас есть более простой способ сделать это. Это описано в документации Laravel.

http://laravel.com/docs/5.1/routing#csrf-protection

Вы можете легко исключить некоторые ссылки из промежуточного программного обеспечения токена.

-1
По вопросам рекламы [email protected]