IPN与PDT在贝宝

我在PayPal的即时付款通知(IPN)和付款数据传输(PDT)之间select有困难。

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

但是,PayPal的PDT文档包含这条神秘的线:“PDT并不意味着用于信用卡或Express Checkout交易。 …但是我不能在这个话题上find更多的东西。

  1. 信用卡真的不打算用于PDT? 我想不止一句话。

  2. 这是否意味着一个用户必须有/创build一个PayPal账户来支付?

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

经过这种善意的人谁能说出一些光明?

PDT和IPN的API类似。 主要的区别是当你收到通知。 出于这个原因,我会build议实施这两个。

  • 通过PDT,您可以立即获得通知,并可以进行所需的任何额外处理,并向用户显示确认页面。
  • 使用IPN,即使用户的计算机爆炸,您也可以保证收到付款通知,然后才能向您发送PDT。

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

一个问题:如果你实现了两个,那么你的付款可能会被处理两次。 注意确保不会发生。 我编写的应用程序几乎相同地处理PDT和IPN(后端部分是相同的),并且代码获取数据库中的每个Web用户locking,以便如果同一用户尝试多次提交完全相同的付款只能处理一次。 处理完成后,该处理的结果将被重新用于后续处理。

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


PayPal的PDT系统会向使用PayPal Payments Standard的商户网站发送订单确认信息,并允许他们validation这些信息。 这些网站可以在“订单确认”页面中本地显示这些数据。

何时使用PDT?

IPN提供了与上述相同的function。 那么,什么时候应该selectPDT而不是IPN呢?

通过PDT,客户完成付款后,您的网站将立即得到通知。 然而,对于IPN,客户完成付款的时间与您的网站收到此事件通知的时间之间存在实质性的延迟。

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

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

IPN的优势

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

与IPN相反,由于IPN重新发送确认信息,直到您的网站确认收货,交付订单确认实际上得到保证。 为此,贝宝build议您实施IPN而不是PDT。

IPN的另一个优势是发送多种types的通知,而PDT只发送订单确认。 所以,使用IPN,您的网站可以收到,例如,退款通知以及订单确认。 注意:如果您的网站必须立即通知付款,您可以实施IPN和PDT。 但是,如果您这样做,您的网站将收到两个订单确认每个销售。 因此,您必须小心采取措施(例如,运送产品)仅在给定确认信息的一个副本上。

文档在这里

重1. PDT是用于网站付款自动返回function。 向卖家付款后自动退货redirect到PDT网站。 不幸的是,不能使用PayPal账户可选的function – 用于启用信用卡付款。 这里是来自PayPal的注释:“如果您启用了” 自动退货“function,并且已经select为新用户启用”可选PayPal账户“,则新用户将不会自动返回您的网站,但会有返回选项。 。 用户可以select返回您的网站(PDT步骤)或停留在PayPal网站上。 总结一下,用信用卡支付的用户可以跳过PDT步骤,如果用户不会点击“返回到商店链接”。

重新2.您要支付哪些付费选项取决于您。 如果您想允许在没有PayPal账户的情况下付款,您可以启用账户可选 。 如果您想只允许使用PayPal帐户的用户禁用该function。 可能有更多的select。

Re 3.在你的情况下,你需要成功购买后触发行动。 推荐的方法是实施IPN。 PDT不适用于所有情况,并不保证消息传送。 这里是链接到文档覆盖该主题PDT与IPN 。