【发布时间】:2016-08-08 14:41:31
【问题描述】:
我目前通过 PayPal _xcart 方法有一个完整的购物车和结帐流程,但我想将其迁移到 REST API,主要是因为我想减少价格劫持的可能性。目前,我的 IPN 会检查价格插孔并设置相应的标志,因此不会下载产品(仅销售数字产品)。无论如何,更重要的是,我发现 PayPal 文档非常混乱,我很难完全掌握它。
这是我到目前为止所理解和解决的。
-
使用我的 PHP 脚本(我们称之为页面 A)创建购物车内容,然后创建新的 PayPal 销售并将客户端重定向到 PayPal 进行身份验证
-
在 PayPal 上进行客户端身份验证,然后将其重定向回我的站点到页面 B(页面 B 在页面 A 中定义)
-
页面 B 需要获取 PaymentID(来自页面 A)并使用它来有效地完成交易。一旦比赛完成结帐。
现在这是我的问题:
a) 我已经阅读了很多论坛和教程,他们都提到我应该使用会话来存储页面 A 中的 PaymentId,然后在页面 B 中使用它来完成交易。 SO上的一些线程建议PayPal实际上应该在对页面B的调用中包含PaymentID,以及令牌和PayerID。这些都是近 3 年的帖子,在我的测试过程中,我发现 PayPal 现在也确实返回了 PaymentID。
-
这是一个新事物吗,PayPal 真的开始将 PaymentID 作为 GET 变量发送吗?好的,我在 PayPal SDK 文档(当然不是 PHP,当然是其他语言)上发现他们也返回了 PaymentID作为 GET。 -
与将会话从页面 A 存储到 B 相比,使用 PayPal 提供的 GET 有什么缺点吗?我真的不想要会话,所以 GET 对我来说是理想的选择。我想如果它在 PayPal 文档中,它可以安全使用。 此功能是否也适用于实时页面或仅适用于沙盒?
b) 在页面 B 上,当我执行付款时,我得到一个很好的 JSON 作为响应,但同时我的 IPN 侦听器也被调用,这让我很困惑。我可以/应该只信任 JSON 响应中的所有数据,或多或少地忽略 IPN 侦听器吗?这对于即时下载是有意义的,例如,更容易处理,还是我仍然应该依赖 IPN 进行数据验证?
- 如果我只使用返回到页面 B 的 JSON,哪些是要查找的正确字段以及哪些值?例如,有一个状态字段被批准,另一个(交易 -> 相关项目 -> 状态)是竞争的。我需要检查哪一项?
- 如果我依赖 JSON,我是否还需要检查支付的金额是否与原始金额相符,或者我是否可以相信支付的金额等于我在通话中请求的金额?
- 如果我使用 IPN,我如何将它与交易配对? PaymentID 不会显示在发布到 IPN 的变量中。我能想到的唯一方法是从 JSON 响应中获取 txn_id,但不知何故感觉很奇怪,另外我怎么知道 JSON 响应是否在 IPN 之前到达服务器?
【问题讨论】:
-
所以你基本上是在说“请不要将我链接到我的问题的答案。” ;)
-
你也可以这样说,除非指向某处的链接是用白底黑字写成的(对于 PayPal 官方颜色也可以在白色上写),但说明和参考应该清晰易懂...
标签: php api rest paypal paypal-ipn