PDT 和 IPN 的 API 相似。主要区别在于您收到通知的时间。出于这个原因,我建议同时实施。
- 使用 PDT,您可以立即收到通知,并且可以进行任何需要的额外处理并向用户显示确认页面。
- 使用 IPN,即使用户的计算机在向您发送 PDT 之前发生爆炸,您也可以保证收到付款已收到的通知。
实现两者并获得两全其美。但如果你只做一个,IPN 是可靠的。
一个问题:如果您同时实施,那么您的付款可能会被处理两次。注意确保不会发生这种情况。我编写的应用程序处理 PDT 和 IPN 几乎相同(后端部分相同),并且该代码在数据库中获取每个网络用户的锁定,因此如果同一用户尝试多次提交完全相同的付款只能处理一次。一旦处理,该过程的结果将重新用于任何后续处理它的尝试。
编辑
还有一件事: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。但是,如果您这样做,您的网站将收到每次销售的两个订单确认。因此,您必须小心地仅对给定确认消息的一份副本采取行动(例如,运送产品)。
文档在这里