У меня проблема с тем, как я пытаюсь удалить некоторые переменные сеанса при работе с PayPal и ipn. В частности, я хочу, чтобы кто-то вошел (или нет) в мой интернет-магазин, просмотрите мою корзину , перейдите на PayPal для оплаты, а затем перейдите на мой сайт.
Я использовал PayPal IPN для получения PayPal, чтобы уведомить меня, когда платеж завершен, и я могу направить пользователя обратно на мой сайт, где сеанс может быть начат снова, но я хочу иметь возможность сбросить корзину (но не весь сеанс, если они вошли в систему), как только платеж будет завершен. это будет охватывать мои базы в случае, если пользователь не вернется на страницу завершения платежа на моем сайте, а вернется на сайт на другой странице.
проблема в том, что, хотя я получаю один и тот же идентификатор сеанса как на последней странице с информацией о доставке на моем сайте перед переходом на PayPal, так и на целевую страницу на моем сайте из PayPal, когда платеж завершен, я не могу получить доступ к этой сессии в моем сценарии IPN, который работает на моем сайте в ответ на PayPal. я запускаю session_start () на каждой из этих трех страниц, но когда я отправляю электронное письмо или публикую сообщение на странице метода доставки и целевой страницы оплаты, я получаю один и тот же идентификатор сеанса. когда я посылаю себе по электронной почте результат идентификатора сеанса в моем сценарии ipn, я ничего не получаю.
Я мог бы убить телегу, прежде чем отправиться в PayPal, но что если они захотят вернуться и что-то изменить? я мог бы убить корзину на целевой странице, но что, если они каким-то образом попадут на другую страницу? Мне бы очень хотелось уничтожить корзину, но не всю сессию, когда я получу подтверждение оплаты, но я не знаю, как. я пробовал это на своей странице ipn:
session_start();
$a = session_id();
mail("webmaster@mysite.com", "ipn session id 0", $a, "From: webmaster@mysite.com");
//results in blank email, unlike in other locations on actual displayed pages
// Unset all of the session variables.
$_SESSION = array();
// Delete the session cookie to kill the session
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// Finally, destroy the session.
session_destroy();
unset($_SESSION['cart']);
unset($_SESSION['product_id_array']);
unset($_SESSION['pp_checkout_btn']);
unset($_SESSION['state']);
unset($_SESSION['total']);
unset($_SESSION['shipping']);
unset($_SESSION['grand_total']);
но когда я возвращаюсь на страницу просмотра корзины, она все еще там. Любые идеи очень приветствуются. любой более конкретный код, который поможет, дайте мне знать, и я опубликую его.