100

我在 PayPal 的即时付款通知 (IPN) 和付款数据传输 (PDT) 之间进行选择时遇到了一些问题。

基本上,用户在我的网站上购买一次性产品,在 PayPal 上付款,然后返回我的网站。我了解 IPN 的工作原理,但我现在看到我可能能够使用 PDT 更轻松地触发成功购买后发生的各种操作,因为数据会在那里返回(而不是需要单独的侦听器) .

然而,PayPal 的 PDT 文档中包含这样一条神秘的语句:“PDT 不适用于信用卡或 Express Checkout 交易。” ...但我在这个话题上找不到任何进一步的东西。

  1. 信用卡真的不适合与 PDT 一起使用吗?我想多说一句。

  2. 这是否意味着用户必须拥有/创建一个 PayPal 帐户才能付款?

  3. 这是否意味着如果我想允许用户直接使用他们的 PayPal 账户和/或信用卡支付,我必须实施 IPN?

经历过这种情况的任何人都可以提供一些启示吗?

4

3 回答 3

114

PDT 和 IPN 的 API 相似。主要区别在于您收到通知的时间。出于这个原因,我建议同时实施。

  • 使用 PDT,您可以立即收到通知,并且可以进行任何需要的额外处理并向用户显示确认页面。
  • 使用 IPN,即使用户的计算机在向您发送 PDT 之前发生爆炸,您也可以保证收到付款已收到的通知。

实现两者并获得两全其美。但如果你只做一个,IPN 是可靠的。

一个问题:如果您同时实施,那么您的付款可能会被处理两次。注意确保不会发生这种情况。我编写的应用程序处理 PDT 和 IPN 几乎相同(后端部分相同),并且该代码在数据库中获取每个网络用户的锁定,因此如果同一用户尝试多次提交完全相同的付款只能处理一次。一旦处理,该过程的结果将重新用于任何后续处理它的尝试。

编辑 还有一件事:IPN 比 PDT 携带更多信息。您可以从 IPN 收到许多不同的消息,例如退款通知等,因此您确实应该实施它。


PayPal 的 PDT 系统向使用 PayPal Payments Standard 的商家网站发送订单确认,并让他们验证此信息。然后,此类站点可以在本地“订单确认”页面中显示此数据。

何时使用 PDT?

IPN 提供与上述相同的功能。那么,什么时候应该选择 PDT 而不是 IPN?

使用 PDT,当客户完成付款时,您的网站会立即收到通知。但是,使用 IPN,在客户完成付款与您的站点收到此事件通知的时间之间存在重大滞后。

因此,如果您的网站包含需要立即付款通知的功能,请使用 PDT。

例如,考虑一家数字音乐商店。有了 PDT,这家商店可以让客户立即下载他们的购买,因为 PDT 会立即发送订单确认。使用 IPN,这种立即的订单履行是不可能的。

IPN 的优势

PDT 有一个主要弱点:它只发送一次订单确认。因此,当 PDT 发送确认时,您的站点必须正在运行;否则,它将永远不会收到消息。

相比之下,使用 IPN,几乎可以保证交付订单确认,因为 IPN 会重新发送确认,直到您的站点确认收到为止。因此,PayPal 建议您实施 IPN 而不是 PDT。

IPN 的另一个优点是它发送多种类型的通知,而 PDT 只发送订单确认。因此,使用 IPN,您的网站可以接收,例如,拒付通知和订单确认。注意:如果您的网站必须立即收到付款通知,您可以同时实施 IPN 和 PDT。但是,如果您这样做,您的网站将收到每次销售的两个订单确认。因此,您必须小心地仅对给定确认消息的一份副本采取行动(例如,运送产品)。

文档在这里

于 2010-05-14T18:59:43.377 回答
2

关于 1. PDT 旨在与网站付款自动退货功能一起使用。向卖家付款后,自动退货会重定向到 PDT 网站。不幸的是,该功能无法与 PayPal Account Optional 一起使用 - 用于启用信用卡支付。以下是来自 PayPal 的说明:“如果您已开启自动退货并选择为新用户开启 PayPal Account Optional,则不会自动将新用户引导回您的网站,但可以选择退货。” . 用户可以选择返回您的站点(PDT 步骤)或留在 PayPal 站点。总结一下,信用卡支付时,如果用户不点击“返回商店链接”,则可以跳过 PDT 步骤。

关于 2. 您希望允许哪些支付选项取决于您。如果您想在没有 PayPal 帐户的情况下允许付款,您可以启用Account Optional。如果您只想允许拥有 PayPal 帐户的用户禁用该功能。可能还有更多选择。

Re 3.在您的情况下,您需要在成功购买后触发操作。推荐的方法是实施 IPN。PDT 不适用于所有情况,也不保证消息传递。这是涵盖该主题的文档的链接PDT vs IPN

于 2015-09-16T09:42:36.213 回答
0

这是一个老问题,但我的简单答案是 - 为什么不同时使用 PDT 和 IPN?它们适用于卡交易。

PDT可以向您的网站提供即时的交易状态,您可以在网站上快速查看支付成功或失败状态,并为用户提供适当的信息。

同时,您可以在后台等待来自 IPN 的完整验证。收到后,您可以使用它来进一步更新您的数据库并处理订单。

您可以按照我认为非常清晰和有用的分步指南进行操作 - 它在 2018 年仍然有效。

https://www.codexworld.com/paypal-standard-payment-gateway-integration-php/

于 2018-07-26T23:02:08.673 回答