راکت
حل شده

خطای وجود نداشتن آدرس بازگشت در درگاه به پرداخت ملت

21 پاسخ

سلام خدمت همه راکتی های عزیز
من برای پرداخت از پکیج خوب شتابیت استفاده میکنم و قبلا با درایور زرین پالش کار کردم و مشکلی نداشتم تا به امروز
از نظر ارسال اطلاعات و دریافتش در مسیر call back تعریف شده در سامانه
اما با درگاه جدید که به پرداخت ملت هست مشکلی که دارم اینه که بعد از وارد شدن به صفحه ی بانک و انجام و یا لغو تراکنش مسیر بازگشتی که میخواد داده ارسال کنه برام خطای 404 رو نشون میده اما ادرس بار مرور گر روت دقیق و درستی رو نشون میده

در زرین پال درخواست به صورت get بود و به پرداخت post هست تغییر دادم (در مرحله ی اول تست به پرداخت خطا گرفتم که این روت get هست و نمیتونی به صورت post بازش کنی یعنی باز هم ادرس رو تشخیص میداد )و حتی any رو هم چک کردم و از نظر csrf هم این ادرس disable شده هست.
ممنون میشم اگر راهنمایی بفرمایید دلیل اینکه ادرس رو خطا میده و میگه وجود نداره چی هست.

ثبت پرسش جدید

پاسخ‌ها

21
محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

بهترین پاسخ

@websaz
مشکل نام متغییر هایی بود که از سمت بانک میومد و متفاوت با چیزی بود که زرین پال میفرستاد برام و این تغییر نام باعث این خطا شده بود
با تغییر آدرس روت و تست متن ساده و برگشت ب روت قبلی و خروجی مقدار request دریافتی به این مشکل پی بردم
ولی نمیدونم چرا verify کردن یک پرداخت و بازگشتیش خطاش 404 بود ک ربطی ب پبدا نکردن صفحه نداشت
مشکل برطرف شد و من کلا دنبال مسیر اشتباهی برای حلش بودم

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام کامند php artisan route:cache رو اجرا کنید ببینید تاثیری داره.

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@websaz خطای زیر رو بهم میده
توی سرور هم همینطور نشد

PS C:\Users\lucifer\Desktop\restaurants> php artisan route:cache
Route cache cleared!

   LogicException 

  Unable to prepare route [api/user] for serialization. Uses Closure.

  at C:\Users\lucifer\Desktop\restaurants\vendor\laravel\framework\src\Illuminate\Routing\Route.php:1150
    1146|      */
    1147|     public function prepareForSerialization()
    1148|     {
    1149|         if ($this->action['uses'] instanceof Closure) {
  > 1150|             throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
    1151|         }
    1152| 
    1153|         $this->compileRoute();
    1154| 

  1   C:\Users\lucifer\Desktop\restaurants\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62
      Illuminate\Routing\Route::prepareForSerialization()

  2   C:\Users\lucifer\Desktop\restaurants\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:36
      Illuminate\Foundation\Console\RouteCacheCommand::handle()

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

توی api.php قسمت روت api/user رو پاک کنید ( البته اگر استفاده نمی کنید ) اگر استفاده می کنید به یک controller انتقالش بدید

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@websaz
کاربرد این api چی هست؟

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

گرفتن اطلاعات کاربر لاگین شده در فرانت اند ( البته اگر با vue یا react باشه)

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

من با توابه auth توی فرانت کار کردم و اطلاعات کاربر رو نمایش میدم اما داخل blade لاراول و از react و vue استفاده نکردم
مشکلی که نداره؟
@websaz

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

مشکلی پیش نمیاد این یه api هست ( همین طور که از اسمش مشخصه ) برای اینکه جای دیگه بگیرید مثلا توی app موبایل ( لاراول به شکل sample این متد رو داره توی 99% پروژه های خود من استفاده نمیشه!!! )

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

دوست عزیز این خودش یه سوال دیگه شد

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

توی api.php قسمت روت api/user رو پاک کنید

اگر لطف کنید آدرس فایلش رو دقیق بدید.

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

routes/api.php یه قسمت هست به این شکل:

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

کامنتش کنید

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

من کل اینو کامنت کردمcache:clear و route:cache زدم همون خطا رو داد بازم
دو سه تا route دارم که به controller وصل نیست و function خورده خطا میده
درستش کنم تست میکنم الان
@websaz

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@websaz
اقا تست کردم route:cache رو باز هم خطای 404 میده بهم
قبلش cache:clear و route:clear هم انجام دادم

ادرس بار رو هم میبینم که درسته و همین ادرس و همه چیز وقتی get کنمش و با درایور زرین پال بخوام پرداخت کنم درست عمل میکنه و مشکلی نداره.

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

فایل web.php داخل rotues و کنترلر تون رو قرار بدید

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@websaz

Route::post('/payment/callback','Shop\OrderController@callback')->name('payment.callback');
            $invoice = (new Invoice)->amount($order->payable/10);
            return shetabitPayment::callbackUrl(route('payment.callback'))->purchase($invoice, function($driver, $transactionId) use($order,$cart) {
                $order->resnumbers()->create(['resnumber'=>$transactionId]);
            })->pay()->render();
    public function callback(Request $request)
    {

        try {

        } catch (InvalidPaymentException $exception) {

        }

    }

اطلاعات اضاف رو پاک کردم.

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

من زیاد با این پکیج کار نکردم مطمئن بشید که متد post هست و get یا put نیست. توصیه میکنم document خود درگاه رو بخونید

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

مرسی از وقتی ک گذاشتید
بازم بررسی میکنم
سپاس فراوان
@websaz

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

فکر کنم بر میگشت به قسمت InvalidPaymentException شما

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@websaz
متاسفانه کد بنده برای پیدا کردن اون resnumber از دیتا بیس با دستور firstOrFail() بوده و طبق مستندات لاراول خطاش به صورت 404 هست
من چون طبق کد خود مهندس موسوی این بخش رو کپی کرده بودم انتظار این خطا رو در پیدا نکردن چیزی از دیتابیس نداشتم

Not Found Exceptions#
If the ModelNotFoundException is not caught, a 404 HTTP response is automatically sent back to the client:

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

گفتگو جالبی بود برای من هم تجربی شد

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@websaz
همچنین برای من
باز هم از وقتی که گذاشتید ممنونم دوست عزیز

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

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