راکت
حل شده

برگشت از درگاه بانک

8 پاسخ

سلام دوستان من از زرین پال استفاده میکنم برای پرداخت وقتی از بانک برگشت میکنه اررور 404 لاراول میده این لینک برگشت:

http://localhost:8000/client/payments/checker?Authority=000000000000000000000000000155236721&Status=OK

این هم روت برگشت:

Route::get('payments/checker' , 'PaymentController@checker');

فقط لاراول من 7 هستش
با تشکر

ثبت پرسش جدید

پاسخ‌ها

8
coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

بهترین پاسخ

خوب مشکل همونه، بیارین روت رو خارج از گروپ

صدرا حکیم
صدرا حکیم
@sadrahkm

تخصص: توسعه دهنده لاراول

سلام
معمولا توی پارامتر هایی که همون اول به سمت درگاه ارسال میکنید، یه پارامتر هم به اسم CallBackUrl ارسال میشه که وقتی کار بانک تمام شد، اطالاعات رو بهش POST میکنه. بعدش میتونید اگر پرداخت موفقیت امیز بود یه درخواست GET بزنید و به جایی هدایتش کنید

محمد امین عالی
محمد امین عالی
@mohammad12amin23

تخصص: برنامه نویس لاراول

@sadrahkm با تشکر از جوابتان من این کاری گفتید انجام دادم این کد من شاید بتوانید بیشتر کمک کنید

   public function pay(Payment $payment)
    {
        $price = $payment->totalPrice;

        if ($price === 0 || $price === null) {
            alert()->error('شما اجازه پرداخت ندارید')->confirmButton('باشه');

            return redirect('/client/payments');
        }

        $Description = 'توضیحات تراکنش تستی'; // Required
        $CallbackURL = url('/client/payments/checker'); // Required

        $client = new SoapClient('https://www.zarinpal.com/pg/services/WebGate/wsdl', ['encoding' => 'UTF-8']);

        $result = $client->PaymentRequest(
            [
                'MerchantID' => $this->MerchantID,
                'Amount' => $price,
                'Description' => $Description,
                'Email' => '',
                'CallbackURL' => $CallbackURL,
            ]
        );

        //Redirect to URL You can do it also by creating a form
        if ($result->Status == 100) {
            $payment->update([
                'resNumber' => $result->Authority,
            ]);

            return redirect('https://www.zarinpal.com/pg/StartPay/'.$result->Authority);
        } else {
            alert()->error('ERR: ' . $result->Status)->confirmButton('باشه');
        }

        return redirect('/client/payments');
    }

    public function checker()
    {
        $Authority = request('Authority');

        $payment = Payment::query()->where('resNumber' , $Authority)->firstOrFail();

        if (request('Status') == 'OK') {
            $client = new SoapClient('https://www.zarinpal.com/pg/services/WebGate/wsdl', ['encoding' => 'UTF-8']);

            $result = $client->PaymentVerification(
                [
                    'MerchantID' => $this->MerchantID,
                    'Authority' => $Authority,
                    'Amount' => $payment->totalPrice,
                ]
            );

            if ($result->Status == 100) {
                    alert()->success('عملیات مورد نظر با موفقیت انجام شد','با تشکر')->confirmButton('باشه');
                $payment->update([
                    'status_id' => 3,
                ]);
            } else {
                alert()->success('Transaction failed. Status:'.$result->Status)->confirmButton('باشه');
            }
        } else {
            alert()->success('Transaction canceled by user')->confirmButton('باشه');
        }

        return redirect('/client/payments');

    }

شاید پاسخ شما همین‌جا باشد

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

سلام

توی ادرس بازگشت از بانک
client/payments/checker

این هست، در صورتی که توی ادرس شما

payments/checker

هست، ادرس رو بررسی کنید

محمد امین عالی
محمد امین عالی
@mohammad12amin23

تخصص: برنامه نویس لاراول

@coaradsupp آدرس من توی group و prefix آن client

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

توی روت گروپ که auth ندارین که؟

محمد امین عالی
محمد امین عالی
@mohammad12amin23

تخصص: برنامه نویس لاراول

@coaradsupp داره و کاربر هم login کرده

mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

یه نگاهی به پکیج زیر بندازید

https://github.com/shetabit/payment/blob/master/README-FA.md

همه ی درگاه ها رو با یکبار کدنویسی میتونید باهم داشته باشید :) کافیه اسم درگاه مورد نظرتون رو توی کانفیگ عوض کنید تا درگاه عوض بشه

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

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