Mahdi Afiyati
5 سال پیش توسط Mahdi Afiyati مطرح شد
1 پاسخ

بازگشت عملیات انجام شده وقتی پرداخت موفق نیست.

سلام .
من میخوام وقتی کاربر یک محصولی را که ثبت سفارش میکنه از موجودی کم بشه و کاربر ب صفحه پرداخت منتقل بشه و اگر پرداخت با موفقیت انجام نشد یا اصلا کاربر مرورگر را در صفحه پرداخت بست سیستم به صورت اتوماتیک تمامی اطلاعات رو برگردونه به حالت قبل . تا جایی که من فهمیدم باید با transaction در لاراول انجام بدم اما مشکلی که وجود داره اینکه برای پرداخت کاربر باید ریدایرکت بشه به صفحه درگاه و وقتی برمیگرده دیگه من نمیتونم transaction رو commit یا rollback کنم . ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 5 سال پیش مطرح شد
0

@mahdi.afiyati.dalir

استفاده از transaction همون طوری که اشاره کردید در این شرایط کارساز نیست. اینکه کاربر با پرداخت ناموفق به سایت برگرده قابل تشخیص هست و میتونید عملیات بازگشت موجودی و ... رو انجا انجام بدید. ولی اینکه کلا صفحه رو ببنده یا به هر دلیلی به سایت شما برنگرده تا جایی که میدونم غیرقابل تشخیص برای شما هست.

با این توصیفات یک راهکار به نظرم استفاده از scheduler هست که مثلا بیاید یک job تعریف بکنید که هر n دقیقه یکبار بره سراغ سفارش هاش ثبت شده ای که حداقل n دقیقه از زمان ثبتشون گذشته و هنوز وضعیتشون به «پرداخت موفق» آپدیت نشده و تمامش رو حذف کنه و موجودی رو به همون تعداد مجددا شارژ کنه. در پایان هم لازم هست در تنظیمات سرورتون برای این امر یک CronJob تنظیم کنید.


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

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