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