لاگ اوت شدن ظاهری دیوایز بعد از ریدایرکت از صفحه پرداخت پی‌پینگ

سلام.
من در حال کار روی کد یک استارتاپم و نیاز به درگاه پرداخت داشتیم. درگاه رو همه کاراش رو انجام دادم و الان به خوبی همه‌چی پیش میره الا زمانی که قراره از درگاه برگشت بخوره.
وقتی از درگاه به endpoint ای که برای اپلیکیشن نوشتم برمی‌گردیم، این بزرگوار زحمت می‌کشه و به صورت ظاهری (چون کوکی‌ها رو چک کردم و اوکیه. رفرش هم می‌کنم باز نشان میده که لاگین هستم) کاربرم رو میندازه بیرون. این درحالیه که کل این پروسه به کاربر لاگین‌شده مرتبطه و این باگ/مشکل دیوایز اذیت می‌کنه.
آیا به مشکل مشابهی برخوردید؟

پس کاربر هم صفحه رو رفرش کنه دوباره لاگین میشه…؟

بله دقیقا.
مشکل اینجاست که در این صورت refId و … می‌پره :slight_smile:

اینطوری خشک و خالی چیزی به ذهنم نمیرسه ولی احتمال میدم یک فیچر امنیتی باعث این اتفاق میشه.

یادم هست دوتا جم برای زرین‌پال وجود داشت. شاید بتونی الهام بگیری یا استفاده کنی.

2 Likes

اگه از روشهای منطقی به نتیجه نرسیدید، شاید تنها راه، این باشه که با استفاده از همون refid، کوکی‌های طرف رو دوباره بسازیم براش!
چون به هرحال منطق میگه:

  • اگه پرداخت کرده، پس لاگین بوده
  • وقتی میفرستیم به درگاه پرداخت، refid بهش میدیم و همونو توی دیتابیس هم ذخیره میکنیم
  • وقتی برمیگرده کوکی نداره ولی refidش هم دست خودش هست هم دست ما
  • پس میتونیم فرض کنیم همون کسی هست که ۵دقیقه پیش فرستادیمش درگاه پرداخت، پس کوکی‌هاش رو دوباره براش ست میکنیم

خیلی شلخته و اصطلاحا monkey patch میشه، ولی اگه واقعا هیچ راه دیگه‌ای وجود نداره، میشه از این روش مشکلو حل کرد.
فقط توجه داشته باشید که از اون کد، جای دیگه‌ای کپی نکنید. منظورم اینه که بعدا پروژه پیشرفت میکنه میخواید یه درگاه پرداخت برای یه جای دیگه درست کنید، از این کد استفاده نکنید چون خرابش کردید و دیگه استاندارد نیست.


حالا صبر کنید شاید مشکل رو بشه منطقی‌تر حل کرد. این تنها چیزیه که الآن به ذهنم میرسه. تجربه‌ی کارم با ruby یه کم بیشتر از hello world هست.

2 Likes

درود اگر کاربر در موقع ورود به درگاه از new tab در لینک اکشن دکمه پرداخت بره مشکل موقتی حل می شه! شما الان کاربر رو مستقیم انتقال می دید.

دوم اینکه این مشکل اول از بانک سامان شروع شد الان مثل اینکه همه جایی شده. خود بانک بعد از برگشت سشن رو پاک می کنه به نظرم بهتره با درگاه واسط تماس بگیرید و راه حلشون بپرسید چون یادم هست یک سری به داکیومن هاشون چیز جدید اضافه کردن برای حل این مشکل

بهترین روش هم جداد روش گرفتن توکن هست برای درگاه بانکی که برخی ها این رو پشتیبانی می کنند که راحتر هست فقط کافیه توکن رو بررسی کنید بعد از برگشت کاربر و نیاز به refid نیست

باز بستگی به داکیومنت درگاه مورد نظر شما دارد

سلام، اطلاعاتی که دادین کافی نیست، اگر ممکنه یکمی بیشتر توضیح بدین، اما بنظر میاد مشکلی در endpoint شما وجود داره، حالا در فرانت اند یا بکند نمیشه گفت.
شاید هم مشکلی با CSRF وجود داره.
خوب بود اگر یک دیاگرام کلی وجود داشت و نوع درخواست ها مشخص بود، اگر درمورد فرانت اند همی کمی اطلاعات بدین بد نیست