سلام وقتتون بخیر.
من از نسخهی 2.4 پکیج shetabit/payment استفاده میکنم و هنوز آپدیت نکردم به نسخههای بالاتر.
توی این نسخه هنوز قابلیت این که از سمت سرور درخواست به بانک زده بشه رو داره و من هم همین کارو کردم و بعد یک لینک به کاربر دادم که با کلیک روی یک دکمه به اون منتقل میشه.
تا حدود یک هفته پیش این کدها درست کار میکرد ولی بدون این که من تغییری بدم یا ورژن پکیج رو بیارم بالا دچار مشکل شده و وقتی کاربر از پرداخت برمیگرده و من تابع زیر رو اجرا میکنم:
$receipt = Payment::amount((int)$transaction->paid_amount)->transactionId((int)$tr)->verify();
متاسفانه به ارور زیر میخوره:
\[2020-12-19 16:11:48\] local.WARNING: Call to a member function getTryPublicId() on null
\[2020-12-19 16:28:11\] local.WARNING: file: /home/linomir/vendor/shetabit/payment/src/Drivers/Zarinpal/Zarinpal.php
\[2020-12-19 16:28:11\] local.WARNING: Trace: #0 /home/linomir/vendor/shetabit/payment/src/Drivers/Zarinpal/Zarinpal.php(134): SoapClient->call('PaymentVerifica...', Array)
1 /home/linomir/vendor/shetabit/payment/src/PaymentManager.php(239): Shetabit\\Payment\\Drivers\\Zarinpal\\Zarinpal->verify()
2 /home/linomir/app/Http/Controllers/InvoiceController.php(170): Shetabit\\Payment\\PaymentManager->verify()
تا همین یک هفته پیش داشت درست کار میکرد و نمیدونم یهو چه اتفاقی افتاد که دچار این مشکل شد !
درایوری که استفاده میکنم هم زرینپال هستش.
@khanzadimahdi ممنون میشم اگر کمک بکنید.
در حال حاضر شرایط آپدیت کردن نسخه رو نداریم چون کمپین تبلیغ رفتم و مردم دارن خرید میکنن و متاسفانه مجبوریم همرو دستی پرداخت شده بزنیم توی دیتابیس که درست کار بکنه و آپدیت کردن به نسخه بالاتر دچار مشکل میکنه کار رو.
ممنون.
مشکل از این هست که شناسه تراکنش رو نباید موقع ذخیره کردن به نوع دیگه ای cast کنید.
لطفا توی واتس اپ بهم پیام بدید 09373620353 باهم چک کنیم.
واسه خودمم جالبه که همچین متدی اصلا نداریم و ارور میده!
بعد از کمی ور رفتن و کمک اقای خانزادی @khanzadimahdi متوجه شدیم این ارور به خاطر این هست که احتمالا transaction_id که به زرینپال میدادم درست نبوده.
در واقع مشکل من این بود که اون Authority که زرینپال توی کوئری استرینگ برمیگردوند رو تبدیل به int میکردم و اون حرف الفبایی که قبل از عدد ها وجود داره و ۰ های اول عدد پاک میشدن و وقتی درخواست به زرینپال زده میشد اون ارور رو میداد.
شما اگر دقیقا همین (string)$request->Authority
رو به عنوان transactionId پاس بدید به اون تابع verify درست میشه احتمالا.
از اقای خانزادی هم ممنون به خاطر وقتی که گذاشتند.
@khanzadimahdi
دوستان من بعد از زدن دکمه پرداخت به محض اینکه میاد تو این لینک صفحه سفید میشه
مشکل چیه ؟
کنسول لاگ صفحه رو نگاه کنید + ادرس صفحه رو کپی کنید برای زرین پال ارسال کنید ببینید چی میگن.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟