在paypal Express结账期间,会话被清除


Session being cleared during paypal Express checkout

我目前正在开发一个使用paypal快递结帐系统的电子商务网站。快递结帐系统工作正常,我发送付款金额,用户登录确认发货细节,然后返回到我的页面,我确认后付款完成。我的主要问题是,我有用户名(电子邮件)保存在会话。一旦用户点击checkout with paypal并确认他/她的paypal账户,我的会话就被清除了。所以我不能保持谁购买了什么项目的记录(除非我使用用户支付的电子邮件地址,这可能是不同的用户在我的网站上使用)。

所以我的问题是,是否有任何方法可以在整个确认操作中保留会话状态?或者是否有其他方法保存用户信息?这是一个记录在案的问题吗(我没有在任何地方看到过)?

如果需要更多的细节,请告诉我。

感谢您的宝贵时间。

不,一旦用户离开您的域,会话将终止。

相反,您可以在用户离开您的网站之前将电子邮件地址存储在表格中,并将插入记录的ID传递给paypal。由于此ID是一个自定义字段,一旦用户完成支付,它将在回调url中返回。您可以从URL中获取ID,并从数据库中检索相应的电子邮件。

即使你的PHP会话没有终止(可能有不同的原因导致它关闭),在用户离开PayPal和返回之间依赖会话未被修改仍然不是一个好主意。考虑一个有多个选项卡的用户,在完成Express Checkout之前,他开始在另一个选项卡上浏览你的网站。

相反,将所有对结帐完成很重要的内容存储在数据库中,并通过CUSTOM或INVNUM参数在Express checkout过程中传递唯一标识符。这些将在结账过程中处理。一旦回调返回到您的站点,您就可以很容易地识别数据库中它引用的是哪个"未完成"订单,并将其标记为"已付款"。"