opencart-iranian-banks-issue-non-updated-browsers

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

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

تیم کارشناسی آی سبد در این مقاله راه حلی برای رفع این مشکل ارائه داده است که روی چند سایت هم تست شده است.

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

1- فایل زیر را در حالت ویرایش باز کنید:

catalog/controller/startup/session.php

کدهای زیر را پیدا کنید:

setcookie($this->config->get('session_name'), $this->session->getId(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'));

و با کدهای پایین جایگزین و ذخیره کنید:

setcookie($this->config->get('session_name'), $this->session->getId(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path') . '; SameSite=none', ini_get('session.cookie_domain'), ini_get('session.cookie_secure'));

2- فایل زیر را در حالت ویرایش باز کنید:

system/framework.php

کدهای زیر را پیدا کنید: (نسخه اپن کارت 3)

setcookie($config->get('session_name'), $session->getId(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'));

و با کدهای پایین جایگزین و ذخیره کنید:

setcookie($config->get('session_name'), $session->getId(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path') . '; SameSite=none', ini_get('session.cookie_domain'), ini_get('session.cookie_secure'));

3- اس اس ال (SSL) را فعال کنید.

4- ریدایرکت های لازم را بر روی فایل htaccess اعمال کنید ، از کد زیر استفاده کنید:

کدهای زیر را بالای / RewriteBase قرار دهید.

RewriteCond %{HTTP_HOST} ^www.isabad.com$ [NC]
RewriteRule ^(.*)$ https://isabad.com/$1 [R=301,L]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

دقت کنید که به جای isabad.com آدرس دامین سایت خود را قرار دهید.

 

برای نسخه های کمتر از 2.3 نیز فایل system/library/session.php را در حالت ویرایش باز کرده و کد زیر را به حالت توضیح در آورید:

ini_set(‘session.cookie_httponly’, ‘On’);

سپس بعد از خط session_start(); کد زیر را اضافه کنید:

setcookie(session_name(), session_id(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path').'; SameSite=None', ini_get('session.cookie_domain'), true, ini_get('session.cookie_httponly'));

همچنین بعد از کد return session_destroy(); کد زیر را اضافه کنید:

setcookie(session_name(), session_id(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path').'; SameSite=None', ini_get('session.cookie_domain'), true, ini_get('session.cookie_httponly'));

دیدگاهتان را بنویسید