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