محمد امین عالی
5 سال پیش توسط محمد امین عالی مطرح شد
8 پاسخ

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

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

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

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

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

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


ثبت پرسش جدید
coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

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


صدرا حکیم
تخصص : توسعه دهنده لاراول
@sadrahkm 5 سال پیش مطرح شد
0

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


محمد امین عالی
تخصص : برنامه نویس لاراول
@mohammad12amin23 5 سال پیش مطرح شد
0

@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
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

سلام

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

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

payments/checker

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


محمد امین عالی
تخصص : برنامه نویس لاراول
@mohammad12amin23 5 سال پیش مطرح شد
0

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


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

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


محمد امین عالی
تخصص : برنامه نویس لاراول
@mohammad12amin23 5 سال پیش مطرح شد
0

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


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

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


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش مطرح شد
0

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

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

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


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

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