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。但是,如果您这样做,您的站点将为每次销售收到两个订单确认。因此,您必须小心仅对给定确认消息的一个副本采取措施(例如,运送产品)。
这里的文件