Paypal REST API Return Page


Paypal REST API Return Page

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

当用户注册一个计划时,他们会去PayPal付款。在他们完成该步骤后,PayPal将他们重定向到我提供的返回URL。

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

我将session_start()作为所有文件的第一行,因此正在创建会话。在将用户带到PayPal之前,我已经验证了$_SESSION数组正在填充——这只是在PayPal之后将其带回时。

有没有更好的方法来保存这样的数据,这样我就可以在从PayPal返回时更新用户帐户?或者有一种方法可以通过PayPal请求传递电子邮件,以便在返回时将其返回到他们发送回我网站的对象中?

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

假设你没有无意中关闭会话或重新生成ID,听起来并没有真正的"会话管理"问题,但也许这与PayPal重定向回的URL有关。

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

例如,如果我在example.com访问您的域,则我的会话将仅在example.com上处于活动状态。如果我转到www.example.com,我将收到一个新的会话。

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

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

session.cookie_domain = ".example.com"

我对最近的一个问题给出的答案也应该在这里起作用:

我对这个问题的解决方案是override_merchant_preferences与查询中包含用户id的return_url,如www.domain.com/api/handler.php?uid=42&action=return

当然,您可以通过这种方式通过$_GET传递任何想要的标识符。