Paradox
9 ماه پیش توسط Paradox مطرح شد
2 پاسخ

مشکل در کال بک از بانک

سلام وقت بخیر
من از پکیج shetabit payment برای درگاه پارسیان استفاده میکنم
به درگاه متصل میشم ولی موقع برگشت از بانک وقتی روت به شکل get تعریف میکنم خطا میده که به شکل post باید باشه وقتی به شکل post تعریف میکنم موقع برگشت از بانک خطای 404 نمایش داده میشه و کاربر از سایت logout میشه
خیلی وقته درگیرش هستم و مشکل حل نمیشه لطفا اگه کسی میدونه راهنمایی کنه

csrf توی میدلور غیرفعال کردم

protected $except = [
      '/payment/callback'
];

روت ها

Route::namespace('frontend')->group(function() {
    Route::post('/payment' , [PaymentController::class ,'payment'])->name('cart.payment');
    Route::post('/payment/callback' , [PaymentController::class ,'callback'])->name('payment.callback');
});

controller

class PaymentController extends Controller
{
    public function payment()
    {
            $cart = Cart::instance('cart');
            $cartItems = $cart->all();
            if($cartItems->count()) {
                $price = $cartItems->sum(function($cart) {
                   return $cart['tour']->price * $cart['quantity'];
                });

            $orderItems = $cartItems->mapWithKeys(function($cart) {
                return [$cart['tour']->id => [ 'quantity' => $cart['quantity']] ];
             });

            $order = auth()->user()->orders()->create([
                'status' => 'unpaid',
                'price' => $price
            ]);

            $order->tours()->attach($orderItems);

            // $invoice = (new Invoice)->amount($price);
            $invoice = (new Invoice)->amount(1000);

            return ShetabitPayment::callbackUrl(route('payment.callback'))->purchase($invoice, function($driver, $transactionId) use ($order, $cart,$invoice) {

                $order->payments()->create([
                    'resnumber' => $invoice->getUuid(),
                ]);

                $cart->flush();

            })->pay()->render();

        }

       alert()->error('پرداخت انجام نشد مجددا سعی کنید');
        return back();
    }

    public function callback(Request $request)
    {
        try {
            $payment = Payment::where('resnumber', $request->clientrefid)->firstOrFail();

            // $payment->order->price
            $receipt = ShetabitPayment::amount(1000)->transactionId($request->clientrefid)->verify();

            $payment->update([
                'status' => 1
            ]);

            $payment->order()->update([
                'status' => 'paid'
            ]);

            alert()->success('پرداخت شما موفق بود');
            return redirect('/profile');

        } catch (InvalidPaymentException $exception) {
            /**
             * when payment is not verified, it will throw an exception.
             * We can catch the exception to handle invalid payments.
             * getMessage method, returns a suitable message that can be used in user interface.
             **/
            alert()->error($exception->getMessage());
            return redirect('/profile');
        }

    }
}

برای اینکه logout نشه کاربر توی فایل session به شکل زیر تغییر دادم

    'secure' => env('SESSION_SECURE_COOKIE' , true),
'samesite' = 'none', 

دیگه کاربر از سایت لاگ اوت نمیشه ولی مشکل کال بک همچنان هست

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


ثبت پرسش جدید
Daniyal Amiri
@daniyalx77 9 ماه پیش مطرح شد
0

سلا م
خطلای 404 یعنی ادرس وجود ندارد
درمورد لاگ اوت شدن من ایدی کاربر رو میگیریم وخودم لاگین میکنم


Paradox
تخصص : در حال یادگیری
@paradox 9 ماه پیش مطرح شد
0

@daniyalx77
روت که قطعا وجود داره
مشکل از کنترلر بود که مشکل کال بک حل شد

متوجه این جمله نشدم

درمورد لاگ اوت شدن من ایدی کاربر رو میگیریم وخودم لاگین میکنم


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

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