Paypal中的IPN与PDT

时间:2010-05-14 18:50:53

标签: paypal listener paypal-ipn payment paypal-pdt

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

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

但是,PayPal的PDT文档包含这条神秘的内容:“PDT并不适用于信用卡或快速结账交易。” ......但我在这个话题上找不到任何进一步的内容。

  1. 信用卡真的不适合与PDT一起使用吗?我想要的不仅仅是一句话。

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

  3. 这是否意味着如果我想让用户直接用PayPal账户和/或信用卡付款,我必须实施IPN?

  4. 任何经历过这种情况的人都能解释一下吗?

3 个答案:

答案 0 :(得分:109)

PDT和IPN的API类似。主要区别在于您收到通知。因此我建议实施两者。

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

实施两者并充分利用这两个方面。但如果你只做一个,IPN就是可靠的。

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

修改 还有一件事: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。但是,如果您这样做,您的网站将为每次销售收到两个订单确认。因此,您必须小心谨慎地对给定确认消息的一个副本采取行动(例如,运送产品)。

Documentation Here

答案 1 :(得分:1)

Re 1. PDT旨在与网站付款的自动退货功能一起使用。在向卖方付款后,自动退货重定向到PDT网站。不幸的是,它无法使用该功能以及PayPal帐户可选 - 用于启用信用卡付款。以下是来自PayPal的说明:'如果您已启用Auto Return并已选择为新用户启用PayPal帐户可选,则新用户不会自动定向回您的网站,但会获得选择返回。'。用户可以选择返回您的站点(PDT步骤)或留在PayPal站点。如果用户不点击“返回商店链接”,则在使用信用卡付款时,用户可以跳过PDT步骤进行总结。

Re 2.您想要允许哪些付费选项取决于您。如果您想允许在没有PayPal帐户的情况下付款,您可以启用Account Optional。如果您只允许使用PayPal帐户的用户禁用该功能。可能会有更多选择。

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

答案 2 :(得分:0)

这是一个古老的问题,但是我的简单答案是-为什么不同时使用PDT和IPN?他们将可以正常进行卡交易。

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

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

您可以按照这份逐步指南进行操作,我发现该指南非常清楚且很有帮助-并在2018年仍然有效。

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