Переменные SESSION уничтожаются в процессе IPN Paypal - PullRequest
1 голос
/ 11 февраля 2011

Моя проблема заключается в том, что мои переменные SESSION уничтожаются во время процесса IPN Paypal.

Я успешно записал свой прослушиватель IPN для связи с Paypal, и у меня нет проблем с манипулированием предопределенными переменными IPN, которые Paypal POST возвращаетмне.Несмотря на это, у меня возникают проблемы с доступом к переменным SESSION, созданным до осуществления платежа Paypal.Я предполагаю, что они уничтожаются, когда я подключаюсь к Paypal.

У меня довольно много переменных, поэтому просто использовать пользовательское поле Paypal не обязательно.

Например, если я хочу отправить электронное письмо клиенту, содержащему переменную SESSION(с именем $ _SESSION ['order_type']), которые они создали в процессе оформления заказа на моем сайте:

<?php

//enable sessions
if (!isset($_SESSION)) {
  session_start();
}

**** Accept payment/verify using paypal listener etc****

// If everything is successful and the payment is accepted then send an email containing some previously stored session variables

   $mail_From = "From: me@example.com";
   $mail_To = "email@email.com";
   $mail_Subject = "Your payment has been made successfully” ;
   $mail_Body = "you have successfully made a ". $_SESSION['order_type']."order";
   mail($mail_To, $mail_Subject, $mail_Body, $mail_From);

   ?>

В моем электронном письме никогда не содержатся переменные сеанса, из-за которых я считаю, что они уничтожаются ... пожалуйстапомогите!

Большое спасибо,

Дэвид

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Вы можете создать обработчик сохранения сеанса для хранения всех ваших данных сеанса в базе данных.Передайте идентификатор сеанса в PayPal в поле custom и восстановите сеанс по возвращении из PayPal.

Начните с примера с http://nl.php.net/manual/en/function.session-set-save-handler.php

1 голос
/ 25 июля 2014

Сессия уникальна для клиента. Ваш прослушиватель PayPal IPN обрабатывает сообщения, отправленные из Paypal, а не из вашего браузера. Технически, это не та же «СЕССИЯ», что и ваш платежный процесс. Все переменные сеанса, установленные в процессе оплаты, невидимы в кодах прослушивателя IPN.

Чтобы решить эту проблему, вы можете сохранить все переменные вместе с «идентификатором транзакции» в базе данных (или файле) в процессе оплаты. И получить их позже в прослушивателе IPN на основе идентификатора транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...