【发布时间】:2014-09-14 09:32:35
【问题描述】:
我们基于 opencart 的商店正在使用 paypal express 结账,大约 25% 的 paypal express 订单遇到问题。
问题似乎是当他们在使用 paypal 后返回网站时,他们的会话数据丢失了,因此他们购物车的所有详细信息都消失了。
当他们返回站点(通常通过支付/pp_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