Paypal中的IPN与PDT

Tom*_*Tom 96 payment paypal listener paypal-ipn paypal-pdt

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

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

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

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

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

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

任何经历过这种情况的人都可以解决这些问题吗?

Mr.*_* 安宇 110

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

文档在这里

  • 这个答案没有回答OP的#1,#2或#3问题,但它被接受了吗? (8认同)
  • @Tom:我的实现是:当PDT或IPN进入时,请阅读参数并尝试处理付款.处理器A)阻止其他同时处理(对于该用户)和B)检查以查看它是否已被处理.处理完成后,使用IPN完成,使用PDT向用户显示确认页面或收据页面或其他任何内容.如果另一侧发生故障,PDT侧和IPN侧都可以正常工作,但两者都可以获得良好的可靠性.相当高比例的用户在IPN到达之前不点击. (3认同)
  • 谢谢,我明白了.所以基本上,将数据库更新链接到IPN(因为它将始终得到处理)并仅将用户确认链接到PDT(例如检查付款是否已在待处理页面上由IPN处理).... (2认同)
  • IPN最多需要4天才能回答......很糟糕 (2认同)