首页 文章

Paypal REST API返回页面

提问于
浏览
0

我目前正在使用Paypal REST API来处理具有多个计划的用户的计费协议 .

当用户注册计划时,他们需要PayPal付款 . 完成该步骤后,PayPal会将它们重定向到我提供的返回URL .

问题是,有时用户的会话在从PayPal返回时不会持久存在!

我将 session_start() 作为所有文件中的第一行,因此正在创建会话 . 在将用户带到PayPal之前,我已经验证了 $_SESSION 阵列正在填充 - 它就是在PayPal之后被带回来的时候 .

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

2 回答

  • 0

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

    假设您不是无意中closing the sessionregenerating 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"
    
  • 0

    我给最近一个问题的答案也应该适用于此:

    我用于同一问题的解决方案是在结算协议上设置override_merchant_preferences,其中return_url在查询中包含用户ID,例如www.domain.com/api/handler.php?uid=42&action=return .

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

相关问题