2015-02-24 152 views
0

我目前使用Paypal REST API来为具有多个计划的用户处理结算协议。Paypal REST API返回页面

当用户注册一个计划时,他们需要PayPal来支付。完成该步骤后,PayPal将其重定向到我提供的返回URL。

问题是,有时用户会话从贝宝返回时不会持续!

我有session_start()作为我所有文件中的第一行,所以会话正在创建。在将用户带到PayPal之前,我已经验证$_SESSION阵列正在被填充 - 这只是在PayPal后才被带回。

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

+0

您应该将用户标识添加到发送到PayPal的输入中,然后返回给您 – 2015-02-24 03:14:26

+0

虽然没有输入发送到PayPal。我有一个按钮“Pay with paypal”,他们点击它,然后我发布了一个“使用PayPal创建结算协议”的方法:http://htmlpreview.github.io/?https://raw.githubusercontent .com/paypal/PayPal-PHP-SDK/master/sample/doc/billing/CreateBillingAgreementWithPayPal.html – 2015-02-24 03:22:53

+0

计划是否存在或如何创建? – 2015-02-24 03:26:55

回答

0

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

假设您不是无意中closing the sessionregenerating the ID,听起来好像没有实际的“会话管理”问题,但可能与PayPal重定向到的URL有关。

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

例如,如果我访问您的域名为example.com,我的会话将只在example.com上激活。如果我然后去www.example.com,我将收到一个新的会话。

您可以通过访问您的网站example.comwww.example.com并检查设置了哪个域名来验证此cookie。如果.example.com(注意是领先.),那么这就是问题=]

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

session.cookie_domain = ".example.com" 
0

我给了一个最近的问题相同的答案应该在这里工作,以及:

我用同样的问题的解决方案是建立在结算协议 override_merchant_preferences,其中 return_url包含查询中的用户标识,如 www.domain.com/api/handler.php?uid=42&action=return

虽然当然你可以通过$_GET这样的方式传递你想要的任何标识符。

+0

好想,谢谢你的输入! – 2015-03-31 15:12:40