В настоящее время я работаю над интеграцией веб-сайта электронной коммерции на основе PHP / MySQL, которым я управляю, с платежным шлюзом RBS Worldpay.Вот моя проблема:
Клиент заполняет свою корзину покупок, и при этом содержимое сохраняется в глобальном массиве $_SESSION
, а также сохраняется в файле cookie.Когда клиент выписывается, его отправляют на страницы Worldpay, чтобы указать свои платежные реквизиты.Я использую функцию «Ответ на платеж» / функцию обратного вызова, чтобы перенаправить успешный платеж на мою собственную страницу «translation.php», которая сообщает клиенту, что все в порядке, плюс выполняет некоторые запросы к базе данных в фоновом режиме.
Все в порядке!
ОДНАКО , я также на данный момент хочу очистить данные корзины покупок из массива $_SESSION
, а также избавиться от cookie.Так хорошо, я просто использую:
$_SESSION['cart'] = array();
setcookie('cart', '', 0, '/');
Но это не работает.И это связано с тем, что URL для этой перенаправленной страницы на самом деле https://secure-test.wp3.rbsworldpay.com/wcc/purchase
, а не www.mysite.co.uk/confirmation.php
.В качестве теста у меня была страница подтверждения, повторяющая phpinfo (), и из переменных $ _SERVER все вроде бы нормально, например:
_SERVER["DOCUMENT_ROOT"] /var/www/vhosts/mysite.co.uk/httpdocs
_SERVER["SCRIPT_FILENAME"] /var/www/vhosts/mysite.co.uk/httpdocs/confirmation.php
_SERVER["SERVER_PROTOCOL"] HTTP/1.0
_SERVER["REQUEST_METHOD"] POST
_SERVER["QUERY_STRING"] installation=[xxxxxx]&msgType=authResult
_SERVER["REQUEST_URI"] /confirmation.php?installation=xxxxxx&msgType=authResult
_SERVER["SCRIPT_NAME"] /confirmation.php
_SERVER["PHP_SELF"] /confirmation.php
_SERVER["HTTP_USER_AGENT"] WJHRO/1.0 (WorldPay Java HTTP Request Object)
Так что, похоже, из-за того, что URLуказывая на другой домен, мой скрипт не может ни получить доступ к данным $ _SESSION и $ _COOKIE, ни манипулировать ими.Я не знаю, как это делает система Worldpay, это не iframe или что-то подобное, но я подозреваю, что это связано с пользовательским агентом - "WJHRO / 1.0 (WorldPay Java HTTP Request Object)"
Кто-нибудь знаком с этим?Как я могу обойти это?
Спасибо за чтение!
Майкл