【问题标题】:Missing session data after paypal express checkout贝宝快速结帐后缺少会话数据
【发布时间】:2014-09-14 09:32:35
【问题描述】:

我们基于 opencart 的商店正在使用 paypal express 结账,大约 25% 的 paypal express 订单遇到问题。

问题似乎是当他们在使用 paypal 后返回网站时,他们的会话数据丢失了,因此他们购物车的所有详细信息都消失了。

当他们返回站点(通常通过支付/p​​p_express/expressReturn)并且会话数据没有贝宝/购物车详细信息时,尝试查看可能导致它的原因,我已记录了大多数超全局变量的详细信息. 他们的会话总是:

Array
(
    [category] => desktop
    [language] => en
    [currency] => GBP
    [cart] => Array
        (
        )

)

有时当他们返回时,他们的 cookie 是空的,而其他时候语言、货币和跟踪都在那里。

进一步调查后,看起来会话由于重定向方式而丢失:

header('Location: https://www.paypal.com/cgi‑bin/webscr?cmd=_express-checkout&token=' . $result['TOKEN'].'&useraction=commit');

所以在我添加的每个标题重定向之前

session_write_close();

问题实际上似乎有所缓解,但它仍在发生。

服务器使用 memcache,我最后的想法是它可能内存不足并且他们的会话丢失了 - 但我想如果是这种情况,我们会在整个网站上看到频繁的注销问题。

【问题讨论】:

  • 这些登录用户是否在某些时候使用session_start()?如果是这样,您是说当用户被退回到您的服务器时没有检测到他们的会话? (只是想更详细地了解你正在做什么和面临什么)
  • 是的 - 会话开始得更早,但是当我在 paypal express checkout 中记录 sessiondata/post/get/cookies/server 时,没有提到会话 ID
  • 您使用的是默认 OpenCart 安装或某些第三方安装附带的默认 PayPal Express Checkout 付款扩展吗?默认付款选项应该没有问题。我已经建立了许多使用这个的电子商店,并且从未经历过这种行为。如果是第三方扩展,请联系其开发人员寻求支持。
  • OpenCart 版本是 1.5.4,并且 PayPal express 已从更高版本 1.5.6.3 修改(已删除重复配置文件等内容))我无法重新创建问题,它也发生在多个浏览器和设备上

标签: php session opencart paypal


【解决方案1】:

根据我的经验,在从支付网关返回后使用 Sessions 显示订单数据是一种不好的做法。

大多数支付网关(包括 PayPal)都允许您传递 OrderID 或其他将在成功/失败时返回的自定义变量。您通常可以按照以下步骤操作:

  1. 将订单保存到数据库,检索订单ID
  2. 重定向到支付网关。将 orderID 传递给支付网关。
  3. 在成功/失败时,使用支付网关发回的 orderID 从数据库中读取订单

【讨论】:

  • 我不想重写 paypal express 模块,但会序列化购物车并将其存储在数据库中,然后如果会话丢失,从存储的版本重新创建购物车是否可以接受?
  • 这基本上是我建议做的。但是您需要一个 ID 来识别数据库中的序列化购物车。您可以将该 ID 发送到 paypal,它会在成功或错误页面上返回它。有关详细信息,请参阅stackoverflow.com/questions/3349151/…。在这种情况下,您不再需要会话。
  • OpenCart 已经像这样工作了。如果客户在提交前开始结帐流程并进入“确认”步骤 - 订单已经创建并存储在数据库中(在 OC 世界中,我们称之为 dummy order,因为它没有任何状态,因此即使在管理中也不可见)。提交后调用支付网关 - 在这种情况下,用户将使用此虚拟订单的 ID 和提供给 PayPal 的其他信息重定向到 PayPal。在他被重定向回支付网关callback 方法后,将调用确保订单更新为正确状态。
  • 之后,用户被重定向到成功页面,所有订单和购物车会话都被清除 - 但此时订单应该已经存在,状态为 已确认(如果一切正常付款顺利)。
猜你喜欢
  • 2014-09-06
  • 2015-11-18
  • 2015-11-30
  • 2012-08-06
  • 2017-11-11
  • 2019-03-16
  • 2013-07-20
  • 2013-11-01
  • 2014-05-03
相关资源
最近更新 更多