paypal - Paypal 中的 IPN 与 PDT

标签 paypal listener paypal-ipn payment paypal-pdt

我在选择 PayPal 的即时支付通知 (IPN) 和支付数据传输 (PDT) 之间遇到了一些困难。

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

但是,PayPal 的 PDT 文档包含以下神秘行:“PDT 不适用于信用卡或 Express Checkout 交易。” ...但我找不到关于该主题的任何进一步信息。

  1. 信用卡真的不能用于 PDT 吗?我想要的不仅仅是一句话。

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

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

任何经历过这种情况的人都可以透露一些信息吗?

最佳答案

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

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

两者兼顾,两全其美。但如果您只做一个,IPN 是可靠的。

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

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


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

何时使用 PDT?

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

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

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

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

IPN的优势

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

相比之下,使用 IPN,订单确认的交付实际上是有保证的,因为 IPN 会重新发送确认,直到您的网站确认收到为止。因此,PayPal 建议您实现 IPN 而不是 PDT。

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

Documentation Here

关于paypal - Paypal 中的 IPN 与 PDT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2836779/

相关文章:

php - 将 PayPal 结账与 Codeigniter 集成

Paypal 登录范围错误

php - 永久获取 "INTERNAL_SERVICE_ERROR"调用 "/v1/payments/payment"时

android - 如何在按钮的 onClick 方法中注册传感器监听器?

Java 异常监听器

paypal - 如何在处理之前确保 Paypal IPN 的唯一性?

paypal - 我可以用 "Login with Paypal"得到 payer_id 吗?

symfony - 如何在 onKernelRequest 事件中获取 security.context。交响乐2

PayPal IPN 不返回 contact_phone

php - Paypal IPN 取消订阅,发送新的登录信息?