Почему Id сессии изменяется после проведения оплаты в Opencart?

Привет. У меня проблема с интернет-магазином на платформе Opencart 2.3 русская сборка, связанная с эквайрингом от тинькофф банка. В корзине есть товары, которые записаны в базе данных вместе с ID сессии. После применения купона в корзине его данные проверяются на валидность. Однако, при возврате на сайт после оплаты происходит еще одна проверка, которая не проходит из-за смены ID сессии. Интересно, что ID сессии снова становится прежним после получения Success страницы об успешном оформлении заказа. Перекопал все файлы, но не нашел причину изменения сессии. Помогите понять, почему меняется сессия и где это происходит. Спасибо.
  • 25 января 2024 г. 16:19
Ответы на вопрос 2
Привет! Проблема, с которой вы столкнулись в Opencart 2.3, может быть связана с различными факторами, включая настройки безопасности как самого Opencart, так и настройки сервера. Вот некоторые возможные причины смены ID сессии:

1. **Механизмы безопасности:**
   Некоторые платформы для обеспечения безопасности могут изменять ID сессии при выполнении важных операций, таких как вход в систему или проведение платежей, чтобы предотвратить атаки через перехват сессии.

2. **Настройки сервера:**
   Настройки PHP могут влиять на обработку сессий. Например, параметр `session.use_only_cookies` должен быть установлен в `1`, чтобы ID сессии передавался только через cookie, а не через GET-параметры в URL, что делает сессию более уязвимой.

3. **Параметры конфигурации Opencart:**
   Проверьте файлы конфигурации (`config.php` и `admin/config.php`), особенно те части, где регулируются параметры сессии (например, `session_engine` или подобные).

4. **Модификации и расширения:**
   Если у вас установлены сторонние расширения или модификации, они также могут влиять на обработку сессий. Проверьте все установленные модули, особенно связанные с платежными системами.

5. **Callback от платежного шлюза:**
   При возврате пользователя от платёжного шлюза может произойти вызов коллбэка, который инициирует новую сессию. Проверьте код обработки платежей и коллбэков от Тинькофф, возможно, в них заложена логика смены сессии при определённых условиях.

Для того, чтобы решить эту проблему, попробуйте следующие шаги:

- **Логирование:**
  Включите логирование всех изменений сессии, вы можете добавить временный код логирования в разные части системы, чтобы отслеживать, когда именно меняется ID сессии.

- **Изучение логов сервера:**
  Проверьте логи сервера на предмет ошибок или предупреждений, связанных с сессиями.

- **Тестирование на различных этапах:**
  Постепенное тестирование процедур до, во время и после оплаты может помочь выявить момент, когда именно происходит смена сессии.

- **Связь с Тинькофф:**
  При возможности обсудите эту проблему с техподдержкой Тинькофф, возможно, они сталкивались с подобными проблемами и могут предложить решение.
Ну тут все понятно. 
Надо просто отвязать вторую проверку после оплаты.
Похожие вопросы