Не совсем понимаю. Человек возвращается с сайта платёжной системы в мой сайт, при этом у него в куке хранится идентификатор сессии моего сайта. Сессия ПС, если она есть, действует на сайте ПС. Сессия моего сайта действует в моём сайте. Именно так и происходит когда я провожу тестовый платёж и контролирую это в консоли браузера - я остаюсь в своей сесии. Почему у НЕКОТОРЫХ моих пользователей это не так?
Вообще я никогда не сталкивался с тем что при вызове через POST сессия переписывается. Где можно об этом почитать?
if (!isset($_SESSION['cart_order']) || intval($_SESSION['cart_order']) != $_POST['Order']) {
drupal_set_message(t('Thank you for your order! Tranzila will notify us once your payment has been processed.'));
drupal_goto('cart');
}
if ($_POST['Response'] == '000') {
$_SESSION['uc_checkout'][$_SESSION['cart_order']]['do_complete'] = TRUE;
drupal_goto('cart/checkout/complete');
drupal_set_message(t('Thank you for your purchase'));
}
При потере сессии первая проверка не проходит. Запись в лог показывает что к моменту этой проверки массив SESSION пуст.
Что написал? Оплата не сделана через сесии. Данные в платёжную систему и из неё передаются через POST.
Проблема в том что когда пользователь после оплаты возвращается на сайт у него пропадает сессия, т.е. он отлогинивается.
Спасибо, но интеграционные модули для платёжных систем уже сделаны не мной, раньше они работали через сессии. Проверка через POST тоже проводится, и если номер из POST не совпадает с номером в сессии, состояние заказа не меняется. Собственно это у меня и происходит. Возможно это не правильно в архитектурном плане, но хотелось бы найти причину возникшей неполадки.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Вообще я никогда не сталкивался с тем что при вызове через POST сессия переписывается. Где можно об этом почитать?