首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Paypal中的IPN与PDT

Paypal中的IPN与PDT
EN

Stack Overflow用户
提问于 2010-05-15 02:50:53
回答 3查看 29.3K关注 0票数 100

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

基本上,用户在我的网站上购买一次性产品,在PayPal上付款,然后返回我的网站。我知道IPN是如何工作的,但我现在看到,我也许能够更容易地触发PDT成功购买后发生的各种操作,因为数据会立即返回(而不是需要单独的侦听器)。

然而,PayPal的PDT文档中包含这样一句隐秘的话:"PDT不打算用于信用卡或Express Checkout交易。“...但我在这个话题上找不到任何进一步的东西。

  1. 信用卡真的不能和PDT一起使用吗?我想要的不只是一句话。
  2. 是否意味着用户必须拥有/创建PayPal帐户才能进行支付?
  3. 是否意味着如果我想允许用户使用其PayPal帐户和/或直接使用信用卡进行支付,我必须实现IPN?

任何经历过这一切的人都能善意地解释一下吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-15 02:59:43

PDT和IPN的API是相似的。主要区别在于您何时收到通知。出于这个原因,我建议同时实现这两种方法。

  • 使用PDT,您可以立即收到通知,并可以执行所需的任何其他处理,并向用户显示确认页面。
  • 使用IPN,即使用户的计算机在向您发送PDT之前崩溃,您也会收到付款通知。

实现这两种方式,两全其美。但如果你只做一个,IPN就是可靠的。

有一点需要注意:如果你同时实现了这两种方式,那么你的付款就有可能被处理两次。请注意,确保不会发生这种情况。我编写的应用程序处理PDT和IPN几乎相同(后端部分是相同的),并且该代码在数据库中获取每个web用户的锁,因此如果同一用户多次尝试提交完全相同的付款,则只能处理一次。处理后,该过程的结果将被重用于任何后续的处理尝试。

编辑还有一件事: IPN比PDT承载更多信息。你可以从IPN收到很多不同的消息,比如退款通知等,因此你真的应该实现它。

贝宝的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。但是,如果您这样做,您的网站将收到两个订单确认每笔交易。因此,您必须小心地仅对给定确认消息的一个副本执行操作(例如,发送产品)。

Documentation Here

票数 114
EN

Stack Overflow用户

发布于 2015-09-16 17:42:36

回复1。PDT旨在用于网站支付功能的自动返回。自动退货重定向到PDT网站后,支付给卖家。不幸的是,这是不可能使用该功能与PayPal帐户可选-用于启用信用卡支付。这里是来自PayPal的注释:“如果你已经打开了Auto Return,并且已经选择为新用户打开PayPal账户可选,那么新用户将不会被自动引导回你的网站,但会被给予返回的选项。”用户将可以选择返回您的站点(PDT步骤)或留在PayPal站点上。总而言之,当用信用卡付款时,如果用户不点击“返回商店链接”,用户可以跳过PDT步骤。

回复2.你想要允许什么支付选项,这取决于你。如果你想在不使用PayPal账户的情况下付款,你可以启用Account Optional。如果要仅允许具有PayPal帐户用户,请禁用该功能。可能会有更多的选择。

Re 3.对于您的情况,需要在购买成功后触发操作。建议的方法是实现IPN。PDT并不适用于所有情况,也不能保证消息传递。这里是有关PDT vs IPN主题文档的链接。

票数 2
EN

Stack Overflow用户

发布于 2018-07-27 07:02:09

这是一个老问题,但我的简单答案是-为什么不同时使用PDT和IPN?它们可以很好地处理信用卡交易。

PDT可以为您的网站提供即时的交易状态,您可以在这里快速查看支付成功或失败的状态,并为用户提供相应的消息。

同时,您可以在后台等待IPN的全面验证。收到后,您可以使用此信息进一步更新您的数据库并处理订单。

你可以遵循这个分步指南,我发现它非常清晰和有帮助-它在2018年仍然有效。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2836779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档