مهدی عقیقی
4 سال پیش توسط مهدی عقیقی مطرح شد
24 پاسخ

ارور getTryPublicId on null درگاه پرداخت زرین‌پال

سلام وقتتون بخیر.

من از نسخه‌ی 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 ممنون میشم اگر کمک بکنید.

در حال حاضر شرایط آپدیت کردن نسخه رو نداریم چون کمپین تبلیغ رفتم و مردم دارن خرید می‌کنن و متاسفانه مجبوریم همرو دستی پرداخت شده بزنیم توی دیتابیس که درست کار بکنه و آپدیت کردن به نسخه بالاتر دچار مشکل می‌کنه کار رو.

ممنون.


ثبت پرسش جدید
mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 4 سال پیش آپدیت شد
0

مشکل از این هست که شناسه تراکنش رو نباید موقع ذخیره کردن به نوع دیگه ای cast کنید.

https://roocket.ir/discuss/13460?page=2#subject-47559


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 4 سال پیش مطرح شد
0

لطفا توی واتس اپ بهم پیام بدید 09373620353 باهم چک کنیم.

واسه خودمم جالبه که همچین متدی اصلا نداریم و ارور میده!


مهدی عقیقی
تخصص : برنامه نویس وب
@MehdiAghighi 4 سال پیش مطرح شد
1

بعد از کمی ور رفتن و کمک اقای خانزادی @khanzadimahdi متوجه شدیم این ارور به خاطر این هست که احتمالا transaction_id که به زرین‌پال میدادم درست نبوده.

در واقع مشکل من این بود که اون Authority که زرین‌پال توی کوئری استرینگ برمی‌گردوند رو تبدیل به int می‌کردم و اون حرف الفبایی که قبل از عدد ها وجود داره و ۰ های اول عدد پاک می‌شدن و وقتی درخواست به زرین‌پال زده میشد اون ارور رو میداد.
شما اگر دقیقا همین (string)$request->Authority رو به عنوان transactionId پاس بدید به اون تابع verify درست میشه احتمالا.

از اقای خانزادی هم ممنون به خاطر وقتی که گذاشتند.


Ali
@ali200316 2 سال پیش مطرح شد
0

@khanzadimahdi
دوستان من بعد از زدن دکمه پرداخت به محض اینکه میاد تو این لینک صفحه سفید میشه
مشکل چیه ؟
 تصویر


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 2 سال پیش مطرح شد
0

کنسول لاگ صفحه رو نگاه کنید + ادرس صفحه رو کپی کنید برای زرین پال ارسال کنید ببینید چی میگن.


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

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