سلام وقتتون بخیر.
من از نسخهی 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 ممنون میشم اگر کمک بکنید.
در حال حاضر شرایط آپدیت کردن نسخه رو نداریم چون کمپین تبلیغ رفتم و مردم دارن خرید میکنن و متاسفانه مجبوریم همرو دستی پرداخت شده بزنیم توی دیتابیس که درست کار بکنه و آپدیت کردن به نسخه بالاتر دچار مشکل میکنه کار رو.
ممنون.
بعد از کمی ور رفتن و کمک اقای خانزادی @khanzadimahdi متوجه شدیم این ارور به خاطر این هست که احتمالا transaction_id که به زرینپال میدادم درست نبوده.
در واقع مشکل من این بود که اون Authority که زرینپال توی کوئری استرینگ برمیگردوند رو تبدیل به int میکردم و اون حرف الفبایی که قبل از عدد ها وجود داره و ۰ های اول عدد پاک میشدن و وقتی درخواست به زرینپال زده میشد اون ارور رو میداد.
شما اگر دقیقا همین (string)$request->Authority رو به عنوان transactionId پاس بدید به اون تابع verify درست میشه احتمالا.
از اقای خانزادی هم ممنون به خاطر وقتی که گذاشتند.
@khanzadimahdi
دوستان من بعد از زدن دکمه پرداخت به محض اینکه میاد تو این لینک صفحه سفید میشه
مشکل چیه ؟

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