امین
2 سال پیش توسط امین مطرح شد
2 پاسخ

برگشت از درگاه پرداخت

سلام من درگاه پرداخت زرین پال رو به سایتم متصل کردم الان پرداخت انجام میشه ولی کاربر به سایت هدایت نمیشه
این دو تا روت ام هست:

Route::get('/zarinpalpay', [PaymentController::class , 'zarinpalpay']);
Route::get('/zarinpalVerify/{payment}',[PaymentController::class ,'zarinpalVerify']); 

این مربوط به controller هست...دو تا فانکشن توش نوشتم
اولی:


     function zarinpalpay(User $user) {

        $payment = Payment::create([
            // "order_id"=>$order->id,
            "bank"=>"zarinpal"
        ]);

        $zarinpal = new zarinPal([
            "merchantId" => "",
        ]);

        try {

            $request = $zarinpal->apiRequest([

                "callbackurl" => "http://127.0.0.1:8000/zarinpalVerify/",
                "amount" => 10000,
                "description" => "خرید اشتراک",
                    "email" => auth()->user()->email,
                    "mobile" => "09120000000",
            ]);

            $payment->requestInfo = $request;
            $payment->save();

            $requestDecoded = json_decode($request);
            return redirect()->intended($requestDecoded->url);

        } catch (\Exception $error) {
            var_dump(json_decode($error->getMessage()));
        }

    }

دومین فانکشن برای بعد از پرداخت:


    function zarinpalVerify(Payment $payment) {

        var_dump('yes');
        $zarinpal = new zarinPal([
            "merchantId" => "",
        ]);

        // $order = Order::find($payment->order_id);

        $reqinfo = json_decode($payment->requestInfo);

        try {

            $verify = $zarinpal->verify([
                "authority" => $reqinfo->authority,
                "amount" => 10000
            ]);

            $verifyDecoded = json_decode($verify);

            if ($verifyDecoded->code == 100 || $verifyDecoded->code == 101) {
                $payment->status = 1;
                 echo "پرداخت با موفقیت انجام شد.";
                session()->flash('خرید اشتراک با موفقیت انجام شد.');

            }

            $payment->verifyinfo = $verify;

        } catch (\Exception $err) {

            $payment->verifyinfo = $err->getMessage();
            // var_dump($err->getMessage());
            session()->flash('خطایی صورت گرفت! پرداخت موفقیت آمیز نبود.');

        }

        $payment->save();
        return view('account');

    }

اتفاقی که میافته این که اصلا فانکشن دوم (که فک میکنم مربوط به برگشت از درگاه پرداخت هست) اجرا نمیشه
vardump اصلا اجرا نشد
ممنون میشم راهنمایی کنین


ثبت پرسش جدید
رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 2 سال پیش مطرح شد
0

سلام وقتتون بخیر!
برگشت اصلا به method دوم مربوط نیست
توی method اول گفتی که CallbackUrl هست فلان چیز!
اگر روی حالت sandbox باشید نباید مشکلی وجود داشته باشه.

ادرس Callback هم به صورت داینامیک کنید.


امین
@alavi.gavad 2 سال پیش مطرح شد
0

الان من گفتم بعد از خرید برگرده به url که بهش گفتم و به اون هم برمیگرده:
ادرسی که میره:
http://127.0.0.1:8000/zarinpalVerify?Authority=A00000000000000000000000000426127379&Status=OK
ولی الان مشکلم این که گفتم اگه به این روت منتقل شدی بیا فانکشن دوم رو اجرا کن

Route::get('/zarinpalVerify/{payment}',[PaymentController::class ,'zarinpalVerify']); 

ولی وقتی var dump اول فانکشن گذاشتم دیدم اصلا این فانکشن اجرا نمیشه


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

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