Paypal IPN - 获取 + 然后丢失数据?

Posted

技术标签:

【中文标题】Paypal IPN - 获取 + 然后丢失数据?【英文标题】:Paypal IPN - Getting + then losing data? 【发布时间】:2015-09-26 08:42:59 【问题描述】:

我目前正在使用以下库:

https://github.com/paypal/adaptiveaccounts-sdk-php/tree/master/samples/IPN

Paypal IPN 似乎工作正常...我可以成功结帐,并且所有来自 Paypal 的 POST 数据都记录到我的服务器,唯一的问题是 - 当用户返回网站时我如何检查它?

我目前将返回 URL 设置为与 IPN url 相同(在 github 中查找代码),在我获得所有有效数据后,用户返回到 IPN 页面并显示无效。

不太清楚,有什么想法吗?

【问题讨论】:

我应该将数据存储在 SESSION 中吗? 【参考方案1】:

IPN 不应用作返回 URL。

返回 URL 将买家带回您的网站。退货 URL 处的页面应显示通用感谢页面或指示买家订单状态的页面。选择上述哪一项取决于您选择的 PayPal 产品、您的集成和您的购买流程。 IPN 侦听器的脚本 URL 用于自动化您的订单处理过程。 IPN 侦听器获取 IPN 消息,以您自己定义的方式处理您的订单。

IPN 侦听器应该将非常具体的数据回传到带有 HTTP 状态 200 的 PayPal IPN 端点。如果它还输出一个页面,这会使事情变得过于复杂。您需要区分买家访问和 PayPal IPN 消息,并需要进行相应的显示或 IPN 验证。为简单起见,将这两件事分成两个页面/脚本会更好,更合乎逻辑。

我认为这就是您的买家“无效”的原因:您的 IPN 侦听器在买家返回您的侦听器时获取请求数据,并使用该数据通过 PayPal 验证 IPN。 PayPal 返回“无效”,因为数据不是来自有效的 IPN 消息,因此无法验证。

【讨论】:

【参考方案2】:

不是 Php 开发人员,也没有看过,但如果你真的想使用相同的 URL(我不会 - 它们用于不同的目的),那么区别将是 (http) 请求方法:

GET 用于重定向和 POST 用于 IPN

这将是您确定该 url 获取和处理您认为合适的类型的 Request 的一种方式。

【讨论】:

以上是关于Paypal IPN - 获取 + 然后丢失数据?的主要内容,如果未能解决你的问题,请参考以下文章

Paypal IPN 获取订阅结束日期(循环)

收不到 PayPal IPN 回调

如何使用 sandbox.paypal 获取 IPN 进行支付

Paypal:ipn响应问题

接收 PayPal IPN 时不获取任何参数

PayPal IPN 自定义表单数据