دوستان سلام
من وریفای درگاه ملت توی لاراول به مشکل خطای 419 برخوردم میدونم که برای csrf هستش اما هر کاری میکنم رفع نمیشه و توی میلدلویر VerifyCsrfToken هم url رو قرار دادم اما زمانی که اینجا قرار میدم تا خطا نده دیگه کلا به صفحه وریفای نمیاد و بعد از پرداخت و یا انصراف درخواست ورود میکنه و دوباره برگشت میخوره به درگاه خود به خود برای رفعش چکار کنم ؟
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/checkout'
];
}
این کد VerifyCsrfToken هست و برای متدی که وریفای رو انجام میده حتی اگه هیچ کدی هم ننویسم باز با اون خطا مواجه میشم
public function payment($orderId)
{
$order = session()->get('order');
$Amount = $order['priceTotalAll']*10;
$dateTime = new Carbon();
$localDate = $dateTime->format('Ymd');
$localTime = $dateTime->format('His');
$additionalData = "";
$payerId = 0;
$this->client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
if($Amount && $Amount >= 1000 && $orderId ) {
$parameters = [
'terminalId' => $this->terminalId,
'userName' => $this->userName,
'userPassword' => $this->userPassword,
'orderId' => $orderId.time(),
'amount' => $Amount,
'localDate' => $localDate,
'localTime' => $localTime,
'additionalData' => $additionalData,
'callBackUrl' =>$this->callBackUrl,
'payerId' => $payerId
];
try {
// Call the SOAP method
$result = $this->client->call('bpPayRequest',$parameters,$this->namespace);
// Display the result
$res = explode(',', $result);
if ($res[0] == "0") {
echo '<form action="https://bpm.shaparak.ir/pgwchannel/startpay.mellat" method="POST">
<input type="hidden" id="RefId" name="RefId" value="'. $res[1] .'">
'.csrf_field().'
</form>
<script type="text/javascript">window.onload = formSubmit; function formSubmit() { document.forms[0].submit(); }</script>';
exit;
} else {
switch ($result[0]){
case 21:
alert()->error('خطای پرداخت',"پذیرنده نا معتبر است");
return redirect('/');
break;
case 25:
alert()->error('خطای پرداخت',"مبلغ نامعتبر است");
return redirect('/');
break;
case 43:
alert()->error('خطای پرداخت',"قبلا درخواست Verify داده شده است");
return redirect('/');
break;
}
}
} catch (Exception $e) {
return $e->getMessage();
}
} }
public function checkOut(){
return \request()->all();
$this->client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
$orderId = time();
$parameters = [
'terminalId' => $this->terminalId,
'userName' => $this->userName,
'userPassword' => $this->userPassword,
'orderId' => $orderId,
'saleOrderId' => \request()->SaleOrderId,
'saleReferenceId' => \request()->RefId,
];
$verify = $this->client->call('bpVerifyRequest',$parameters,$this->namespace);
if ($verify == '0'){
$settel = $this->client->call('bpSettleRequest',$parameters,$this->namespace);
if ($settel == '0'){}
}elseif($verify != '0' and !empty($verify)){
$inquiry = $this->client->call('bpInquiryRequest',$parameters,$this->namespace);
if ($inquiry == '0'){
$settel = $this->client->call('bpSettleRequest',$parameters,$this->namespace);
if ($settel == 0 ){
}else{
}
}else{
$reversal = $this->client->call('bpReversalRequest',$parameters,$this->namespace);
}
}
}
این کد های من هستش که برای اتصال و وریفای نوشتم
مشکلم اینه که زمانی که پرداخت انجام میشه و برمیگرده به سایت من سشنی که برای لاگین کاربر میپره و هردفعه همین اتفاق میفته
زمان انقضا سشن رو هم بیشتر کردم اما درست نشد.
@ghomi2018
@ghomi2018
چطوری میتونم این مشکل رو حل کنم ؟
از اونجایی که بانک ملت با متد post هم کار میکنه نیاز به csrf_token هست من این url رو توی کلاس VerifyCsrfToken گذاشتم برای حل مشکل csrf اما به این مشکل بر میخورم. ممنون میشم راهنمایی کنید
@rabco
چطوری میتونم این مشکل رو حل کنم
سلام آقای نصرتی راه چی شد ؟ اگه حل شد بی زحمت راه حل رو بنویسید اینجا. تشکر
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟