rabco
4 سال پیش توسط rabco مطرح شد
8 پاسخ

مشکل در verify درگاه ملت در لاراول

دوستان سلام
من وریفای درگاه ملت توی لاراول به مشکل خطای 419 برخوردم میدونم که برای csrf هستش اما هر کاری میکنم رفع نمیشه و توی میلدلویر VerifyCsrfToken هم url رو قرار دادم اما زمانی که اینجا قرار میدم تا خطا نده دیگه کلا به صفحه وریفای نمیاد و بعد از پرداخت و یا انصراف درخواست ورود میکنه و دوباره برگشت میخوره به درگاه خود به خود برای رفعش چکار کنم ؟


ثبت پرسش جدید
محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 4 سال پیش آپدیت شد
0

rabco

کد هاتون قرار بدین ببینم


rabco
تخصص : Full Stack developer
@rabco 4 سال پیش آپدیت شد
0

@ghomi2018

<?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 هست و برای متدی که وریفای رو انجام میده حتی اگه هیچ کدی هم ننویسم باز با اون خطا مواجه میشم


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 4 سال پیش آپدیت شد
0

کد های اتصال به درگاه و وریفای کردن بفرست
به تلگرام من هم میتونی پیام بدی @mr_gh75

rabco


rabco
تخصص : Full Stack developer
@rabco 4 سال پیش مطرح شد
0
    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


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 4 سال پیش مطرح شد
0

نگاه کنید درخواست از طرف کاربر نیست که درخواست داره از طرف درگاه پرداخت برگشت پیدا میکنه


rabco
تخصص : Full Stack developer
@rabco 4 سال پیش مطرح شد
0

@ghomi2018
چطوری میتونم این مشکل رو حل کنم ؟
از اونجایی که بانک ملت با متد post هم کار میکنه نیاز به csrf_token هست من این url رو توی کلاس VerifyCsrfToken گذاشتم برای حل مشکل csrf اما به این مشکل بر میخورم. ممنون میشم راهنمایی کنید


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 4 سال پیش مطرح شد
0

در واتساپ پیام بدید و دسترسی انی دسک تا چک کنم
09360786272


علیرضا کلانتریان
تخصص : Full-Stack Web Developer,C#,Ja...
@ali.kalan 4 سال پیش مطرح شد
1

@rabco
چطوری میتونم این مشکل رو حل کنم

سلام آقای نصرتی راه چی شد ؟ اگه حل شد بی زحمت راه حل رو بنویسید اینجا. تشکر


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام