在Paypal IPN过程中,SESSION变量正在被销毁

时间:2011-02-11 09:35:21

标签: paypal session-variables paypal-ipn

我的问题是我的SESSION变量在Paypal IPN过程中被销毁。

我已经成功编写了我的IPN监听器与Paypal交谈,我没有问题操纵Paypal POST回复给我的预定义IPN变量。尽管如此,我无法访问在Paypal付款之前创建的SESSION变量。我认为当我连接到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 个答案:

答案 0 :(得分:2)

您可以创建会话保存处理程序,以将所有会话数据存储在数据库中。将会话ID传递到custom字段中的PayPal,并在从PayPal返回时恢复会话。

http://nl.php.net/manual/en/function.session-set-save-handler.php

的示例开始

答案 1 :(得分:1)

会话对客户来说是独一无二的。您的PayPal IPN侦听器处理从Paypal发送的消息,该消息不是来自您的浏览器。从技术上讲,它不是同一个&#34; SESSION&#34;您的付款流程您的付款流程中设置的每个会话变量在IPN侦听器代码中都是不可见的。

要解决此问题,您可以将所有变量与&#34;事务ID&#34;一起存储。在支付过程中进入数据库(或文件)。然后根据该事务ID在IPN侦听器中检索它们。