贝宝 REST API Return 页面

Paypal REST API Return Page

我目前正在使用 Paypal REST API 为拥有多个计划的用户处理账单协议。

当用户注册一个计划时,他们会转到 PayPal 进行支付。他们完成该步骤后,PayPal 将他们重定向到我提供的 return URL。

问题是,有时当用户从 PayPal return 时,他们的会话不会持续存在!

我的所有文件的第一行都是 session_start(),因此正在创建会话 。在将用户带到 PayPal 之前,我已经验证 $_SESSION 数组 正在填充 - 就在他们在 PayPal 之后被带回时。

是否有更好的方法来保存这样的数据,以便我可以从 PayPal 更新 return 上的用户帐户?或者也许有一种方法可以通过 PayPalrequest 传递电子邮件,以便在 return 发送回我的网站 return?

的对象中编辑它

如果您在注册页面和 PayPal 重定向回的页面上通过 session_start() 正确启动会话,您的会话应该会正确启动。

假设您不是无意中 closing the session, or regenerating the ID,这听起来似乎没有实际的 "session management" 问题,但也许这与 PayPal 的 URL 有关重定向回。

PHP 会话的一个常见问题是,在默认 PHP 配置下,它们不会在子域之间传输。

例如,如果我在 example.com 访问您的域,我的会话将仅在 example.com 有效。如果我然后去 www.example.com,我将收到一个 new 会话。

您可以通过访问 example.comwww.example.com 的站点并检查 PHPSESSID cookie 设置的域来验证这一点。如果是不是.example.com(注意前导.),那么就是这个问题=]

为了帮助解决这个问题,您可以修改服务器的配置以将 .example.com 设置为 cookie 的域。摘自 this answer:

session.cookie_domain = ".example.com"

我对最近的一个问题给出的相同答案在这里也适用:

The solution I used for this same problem was to set override_merchant_preferences on the billing agreement, with the return_url containing the user id in the query, like www.domain.com/api/handler.php?uid=42&action=return.

尽管您当然可以通过 $_GET 那样传递任何您想要的标识符。