۱۴۰۱/۱۰/۱۳

مشکل پرداخت نامشخص در بازگشت از درگاه بانکی

اگر شما هم بر روی وب سایت خود یک درگاه پرداخت بانکی دارید، ممکن است در این اواخر با مشکل جدی expire شدن session کاربران وب سایت خود پس از بازگشت از درگاه پرداخت بانکی مواجه شده باشید. این موضوع زمانی تأثیر بد خود را به نمایش می گذارد که با انبوهی از تماس های مشتریان ناراضی مواجه می شوید. افرادی که پرداخت خود را در درگاه بانکی با موفقیت انجام داده اند و وجه صورتحساب از حساب های آنها کسر شده است اما در زمان بازگشت به وب سایت متوجه می شوند که صورتحساب آنها همچنان پرداخت نشده باقی مانده است. البته نباید فراموش کرد که این مشکل جدید ارتباطی با خطاهای برنامه نویسی نداشته و صرفاً زمانی با آن قطعاً مواجه شده اید که کاربران پس از بازگشت به وب سایت شما متوجه می شوند که وضعیت لاگین بودن آنها تغییر کرده و به عبارتی logout شده اند.
موضوعی که باعث بروز این مشکلات شده است، تغییراتی است که شرکت های گوگل و موزیلا در مرورگرهای خود Chrome و Firefox انجام داده اند. بر اساس گزارشات با اعمال تغییرات در نحوه مدیریت Cookie ها در این مرورگرها، از این پس باید پارامترهای جدیدی را در تنظیمات وب سایت خود قرار دهیم تا پس از خروج کاربر از وب سایت اصلی ما به سمت درگاه پرداخت بانکی و برگشت وی از درگاه، بتوان وضعیت لاگین بودن وی را همچنان در اختیار داشت. شاید برای درک بهتر این تغییرات بد نباشد تا نگاهی را به فایل ویدئویی زیر بی اندازیم:

https://www.youtube.com/embed/GPz7onXjP_4

همانگونه که در این ویدئو نیز مشاهده نمودید، موضوع اصلی صحبت در خصوص SameSite cookie است که در نسخه 80 گوگل کروم و نسخه های جدید فایرفاکس اتفاق افتاده است و به احتمال خیلی زیاد به زودی در سایر مرورگرها هم اعمال خواهند شد. ویژگی Samesite در Cookie ها مشخص خواهد نمود که این فایل های کوچک حاوی اطلاعات که بر روی مرورگر کاربر ایجاد می شوند در زمان انتقال به دامنه های دیگر به چه شکلی مدیریت شوند. به صورت پیش فرض مقدار این ویژگی در صورت تعریف نشدن برابر Lax است که صرفاً اعتبار کوکی را تا زمان حضور در دامنه اصلی فراهم می آورد. برای اینکه بتوان یک کوکی ایجاد شده در وب سایت را زمان مراجعه به دامنه های دیگری نیز تعمیم داد، باید مقدار مشخص دیگری در این خصوص تنظیم شود که همین موضوع، مشکل منقضی شدن حساب کاربران پس از بازگشت از درگاه پرداخت و نامشخص بودن وضعیت پرداخت آنها را رفع خواهد نمود.
اگر از زبان PHP در پیاده سازی وب سایت خود استفاده نموده اید، می توانید با درج کد زیر در فایل htaccess. این ویژگی جدید را به تنظیمات وب سایت خود اضافه نمایید:

  Header always edit Set-Cookie ^(.*)$ $1;SameSite=None;Secure

اگر زبان برنامه نویسی شما چیزی غیر از PHP است هم با جستجو در خصوص SameSite Cookie می توانید راهکارهای مناسب رفع این مشکل را پیدا نمایید. سربلند باشید