راکت

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

8 پاسخ

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

rabco
rabco
@rabco
ثبت پرسش جدید

پاسخ‌ها

8
محمدرضا قمی اویلی
محمدرضا قمی اویلی
@ghomi

تخصص: لاراول

rabco

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

rabco
rabco
@rabco

تخصص: Full Stack developer

@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

تخصص: لاراول

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

rabco

rabco
rabco
@rabco

تخصص: Full Stack developer

    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

تخصص: لاراول

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

rabco
rabco
@rabco

تخصص: Full Stack developer

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

محمدرضا قمی اویلی
محمدرضا قمی اویلی
@ghomi

تخصص: لاراول

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

علی جعفرزاده
علی جعفرزاده
@ali.kalan

تخصص: Full-Stack Web Developer,C#,Java

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

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

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

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