Paypal中的IPN与PDT


99

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

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

但是,贝宝(PayPal)的PDT文档包含以下神秘之处:“ PDT不能用于信用卡或Express Checkout交易。” ...但是我找不到关于该主题的任何其他内容。

  1. 信用卡真的不打算与PDT一起使用吗?我不只是一句话。

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

  3. 这是否意味着如果我要允许用户直接使用其PayPal帐户和/或信用卡付款,就必须实施IPN?

经历过这个的任何人都可以阐明一些想法吗?


我找到了一个网页,可以更好地解释这一点。[贝宝PDT和IPN:它是如何工作的?] [1] [1]:webmasters.stackexchange.com/questions/21634/...
Ananize斯科特

关于问题2,有一个PayPal Account Optional设置My selling preferences > Website preferences可以打开,以不强迫您的客户创建/拥有PayPal帐户,即。通过信用卡/借记卡付款。
kaiyaq 2014年

Answers:


112

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

  • 使用PDT,您可以立即收到通知,并且可以执行所需的任何其他处理,并向用户显示确认页面。
  • 使用IPN,即使在用户计算机爆炸后,也可以确保您收到付款通知,通知它可以将PDT发送给您。

既实现又实现两全其美。但是,如果仅执行一项操作,则IPN是可靠的一项。

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

编辑 更多:IPN比PDT承载更多的信息。您可以从IPN收到许多不同的消息,例如拒付通知等,因此您确实应该实现它。


贝宝(PayPal)的PDT系统将订单确认发送到使用贝宝(PayPal)付款标准的商户站点,并允许他们对该信息进行身份验证。然后,此类站点可以在“订单确认”页面中本地显示此数据。

何时使用PDT?

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

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

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

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

IPN的优势

PDT的主要缺点是:它仅发送一次订单确认。结果,PDT发送确认信息时,您的站点必须正在运行;否则,它将永远不会收到该消息。

相反,使用IPN,实际上可以保证订单确认的交付,因为IPN会重新发送确认,直到您的站点确认收货为止。因此,贝宝建议您实施IPN而不是PDT。

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

这里的文件


2
谢谢,我明白了。因此,基本上,将数据库更新链接到IPN(因为它将始终得到处理),而仅将用户确认链接到PDT(例如,在待处理页面上检查付款是否已由IPN处理)...。
汤姆(Tom)2010年

1
+1可以同时实现IPN和PDT,我们已经做到了,而且效果很好。
Mark Redman

3
@Tom:我的实现是:当PDT或IPN进入时,读取参数并尝试处理付款。处理器A)阻止了其他同时处理(针对该用户),并且B)检查以查看是否已被处理。处理完成后,使用IPN完成操作,使用PDT完成操作,则向用户显示确认页面或收货页面或其他内容。如果对方掉线,PDT一侧和IPN一侧都可以正常工作,但是同时使用这两种方式,您可以获得很好的可靠性。IPN到达之前,相当多的用户没有点击。
Shiny先生和新安宇

8
此答案不能回答OP的#1,#2或#3问题,但是可以接受吗?
克林特·帕奇

2
IPN最多需要4天的时间才能回答...很糟糕
Toskan

1

关于1. PDT旨在与网站付款的自动返回功能一起使用。向卖家付款后,自动退货将重定向到PDT网站。不幸的是,无法将该功能与PayPal帐户可选功能(用于启用信用卡付款)一起使用。这是贝宝(PayPal)的注释:“如果您为新用户打开了自动退货并选择了打开贝宝帐户可选,新用户将不会自动定向回到您的网站,但可以选择返回。” 。用户可以选择返回您的网站(PDT步骤)或停留在PayPal网站上。总结一下,如果用户不单击“返回存储链接”,则可以跳过PDT步骤。

关于2.您要允许哪种付款方式取决于您。如果您想在没有PayPal帐户的情况下允许付款,则可以启用Optional帐户。如果您只允许具有PayPal帐户的用户禁用该功能。可能还有更多选择。

关于3.您的情况,您需要在成功购买后触发操作。推荐的方法是实施IPN。PDT并非在所有情况下都有效,并且不能保证消息传递。这是涉及该主题PDT vs IPN的文档的链接。


0

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

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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.