1

我的问题是我的 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);

   ?>

我的电子邮件从不包含我的会话变量,这让我相信它们正在被破坏......请帮忙!

非常感谢,

大卫

4

2 回答 2

2

会话对客户来说是唯一的。您的 PayPal IPN 侦听器处理从 Paypal 发送的消息,而不是来自您的浏览器。因此,从技术上讲,它与您的付款过程不在同一个“会话”中。在您的支付过程中设置的每个会话变量在 IPN 侦听器代码中都是不可见的。

为了解决这个问题,您可以在支付过程中将所有变量与“交易ID”一起存储到数据库(或文件)中。稍后根据该事务 ID 在 IPN 侦听器中检索它们。

于 2014-07-25T08:30:42.687 回答
2

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

http://nl.php.net/manual/en/function.session-set-save-handler.php的示例开始

于 2012-01-04T16:31:38.027 回答