从 Paypal 重定向回来后,Wordpress + WooCommerce 中的会话不一致
Posted
技术标签:
【中文标题】从 Paypal 重定向回来后,Wordpress + WooCommerce 中的会话不一致【英文标题】:Inconsistent session in Wordpress + WooCommerce after redirect back from Paypal 【发布时间】:2021-02-15 16:46:15 【问题描述】:我有一个带有 woocommerce 的 wordpress 商店,它启用了 paypal 付款。
我正在开发一个插件,它从购物车页面上的客户端收集一些数据,将这些数据存储在 woocommerce 会话中。然后客户去贝宝付款,然后在成功付款后被重定向回网站到我的插件应该执行其他任务的订单确认页面。
当我从我的计算机访问它时,这在我的测试站点上运行良好。但是,当我从我的 android 手机上尝试时,它对我不起作用。
当我从 Paypal 回来时,会话“似乎”丢失了,并且无法通过 Woocommerce 的 WC()->session->get 访问任何数据
有趣的是,数据仍然存在于数据库的会话表中,只是当我从 Paypal 重定向时它没有被加载。
为了尝试调试它,我在 index.php 中编写了 2 行代码,用于在每次加载网站时记录 Cookie 标头。当我浏览网站时,我可以看到正在记录的 cookie 数据。
但是,当从 paypal 导航返回时,Cookie 标头是空的,所以难怪会话没有被加载。
我的问题是,我该怎么做才能在我被重定向回网站后访问数据。
PS - 最棘手的部分是问题是间歇性的。我设法找到了一台带有浏览器的笔记本电脑,它的行为与我的 Android 手机完全一样,这样我就可以更轻松地检查问题,但是在进行了几次测试之后,它开始能够在从 paypal 导航回网站时访问会话数据。所以基本上现在“它正在工作”,即使从浏览器中清除所有站点数据,我也无法再次重现该问题。但我知道我办公室外的某些人仍然会遇到这个问题。
【问题讨论】:
【参考方案1】:我不会假装是第三方 cookie 会话保存方面的专家,但底线是浏览器在导航离开和返回站点时越来越积极地丢弃 cookie,因此您不应该依赖如果您保存的数据很重要,请注意这种类型的会话保留。
最新的 WooCommerce PayPal 模块使用 Express Checkout API,它会在重定向用户之前生成 EC-################,您将在他们从 PayPal 返回时的 URL。因此,您可以使用它来跟踪相同的用户返回。但它也支持智能支付按钮,因此您的网站在后台保持加载,无论如何这是一种更好的体验。
【讨论】:
以上是关于从 Paypal 重定向回来后,Wordpress + WooCommerce 中的会话不一致的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试将 PayPal 付款与 WordPress 中的联系表 7 集成,但我的重定向不起作用