سلام خدمت همه راکتی های عزیز
من برای پرداخت از پکیج خوب شتابیت استفاده میکنم و قبلا با درایور زرین پالش کار کردم و مشکلی نداشتم تا به امروز
از نظر ارسال اطلاعات و دریافتش در مسیر call back تعریف شده در سامانه
اما با درگاه جدید که به پرداخت ملت هست مشکلی که دارم اینه که بعد از وارد شدن به صفحه ی بانک و انجام و یا لغو تراکنش مسیر بازگشتی که میخواد داده ارسال کنه برام خطای 404 رو نشون میده اما ادرس بار مرور گر روت دقیق و درستی رو نشون میده
در زرین پال درخواست به صورت get بود و به پرداخت post هست تغییر دادم (در مرحله ی اول تست به پرداخت خطا گرفتم که این روت get هست و نمیتونی به صورت post بازش کنی یعنی باز هم ادرس رو تشخیص میداد )و حتی any رو هم چک کردم و از نظر csrf هم این ادرس disable شده هست.
ممنون میشم اگر راهنمایی بفرمایید دلیل اینکه ادرس رو خطا میده و میگه وجود نداره چی هست.
@websaz
مشکل نام متغییر هایی بود که از سمت بانک میومد و متفاوت با چیزی بود که زرین پال میفرستاد برام و این تغییر نام باعث این خطا شده بود
با تغییر آدرس روت و تست متن ساده و برگشت ب روت قبلی و خروجی مقدار request دریافتی به این مشکل پی بردم
ولی نمیدونم چرا verify کردن یک پرداخت و بازگشتیش خطاش 404 بود ک ربطی ب پبدا نکردن صفحه نداشت
مشکل برطرف شد و من کلا دنبال مسیر اشتباهی برای حلش بودم
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
سلام کامند php artisan route:cache رو اجرا کنید ببینید تاثیری داره.
@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()
شاید پاسخ شما همینجا باشد
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
توی api.php قسمت روت api/user رو پاک کنید ( البته اگر استفاده نمی کنید ) اگر استفاده می کنید به یک controller انتقالش بدید
@websaz
کاربرد این api چی هست؟
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
گرفتن اطلاعات کاربر لاگین شده در فرانت اند ( البته اگر با vue یا react باشه)
من با توابه auth توی فرانت کار کردم و اطلاعات کاربر رو نمایش میدم اما داخل blade لاراول و از react و vue استفاده نکردم
مشکلی که نداره؟
@websaz
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
مشکلی پیش نمیاد این یه api هست ( همین طور که از اسمش مشخصه ) برای اینکه جای دیگه بگیرید مثلا توی app موبایل ( لاراول به شکل sample این متد رو داره توی 99% پروژه های خود من استفاده نمیشه!!! )
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
دوست عزیز این خودش یه سوال دیگه شد
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
routes/api.php یه قسمت هست به این شکل:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
کامنتش کنید
من کل اینو کامنت کردمcache:clear و route:cache زدم همون خطا رو داد بازم
دو سه تا route دارم که به controller وصل نیست و function خورده خطا میده
درستش کنم تست میکنم الان
@websaz
@websaz
اقا تست کردم route:cache رو باز هم خطای 404 میده بهم
قبلش cache:clear و route:clear هم انجام دادم
ادرس بار رو هم میبینم که درسته و همین ادرس و همه چیز وقتی get کنمش و با درایور زرین پال بخوام پرداخت کنم درست عمل میکنه و مشکلی نداره.
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
فایل web.php داخل rotues و کنترلر تون رو قرار بدید
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) {
}
}
اطلاعات اضاف رو پاک کردم.
یه بخشش که مربوط با درخواستیه که ارسال میکنم برای بانک که اوکیه
یکی روت بازگشت و دیگری تابعش هست
که میگم کاملا برای درایو دیگه ی همین پکیج که زرین پال باشه کار میکنه و خطایی نداره
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
من زیاد با این پکیج کار نکردم مطمئن بشید که متد post هست و get یا put نیست. توصیه میکنم document خود درگاه رو بخونید
مرسی از وقتی ک گذاشتید
بازم بررسی میکنم
سپاس فراوان
@websaz
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
فکر کنم بر میگشت به قسمت InvalidPaymentException شما
@websaz
متاسفانه کد بنده برای پیدا کردن اون resnumber از دیتا بیس با دستور firstOrFail() بوده و طبق مستندات لاراول خطاش به صورت 404 هست
من چون طبق کد خود مهندس موسوی این بخش رو کپی کرده بودم انتظار این خطا رو در پیدا نکردن چیزی از دیتابیس نداشتم
Not Found Exceptions#
If the ModelNotFoundException is not caught, a 404 HTTP response is automatically sent back to the client:
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
گفتگو جالبی بود برای من هم تجربی شد
@websaz
همچنین برای من
باز هم از وقتی که گذاشتید ممنونم دوست عزیز