Dee*_*pak 3 php csrf payment-gateway paytm laravel-5.3
我通过在laravel 5.3中引用" https://github.com/anandsiddharth/laravel-paytm-wallet "来集成paytm,在付款时它会重定向到paytm站点,当它重定向回我的站点时,它会在VerifyCsrfToken中出现错误"TokenMismatchException .php第67行"
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>
Run Code Online (Sandbox Code Playgroud)
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');
}
}
}
Run Code Online (Sandbox Code Playgroud)
routes.php文件
Route::get('event-registration', 'OrderController@register');
Route::post('payment', 'OrderController@order');
Route::post('payment/status', 'OrderController@paymentCallback');
Run Code Online (Sandbox Code Playgroud)
嘿@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/*',
];
}
Run Code Online (Sandbox Code Playgroud)
它在特定路线的laravel中禁用csrf.希望它能正常工作.
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |