IPN与PDT在贝宝

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

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

但是,PayPal的PDT文档包含这条神秘的话语:“PDT不适用于信用卡或Express Checkout交易。” ...但我无法找到关于这个话题的更多信息。

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

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

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

  • 任何经历过这种善意的人都可以点亮吗?


    PDT和IPN的API类似。 主要区别在于何时收到通知。 出于这个原因,我会建议实施这两个。

  • 通过PDT,您可以立即得到通知,并可以进行所需的任何额外处理,并向用户显示确认页面。
  • 使用IPN,即使用户的计算机发生爆炸,您可以保证收到付款已收到的通知,然后才能向您发送PDT。
  • 实施两者并获得两全其美。 但是如果你只做一个,IPN是可靠的。

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

    再编辑一件事: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。 但是,如果您这样做,您的网站将为每次销售收到两份订单确认。 因此,您必须小心谨慎地采取措施(例如,运送产品)在给定确认信息的一个副本上。

    文档在这里


    重1. PDT旨在与自动回报网站付款功能一起使用。 向卖家付款后自动退货重定向至PDT网站。 遗憾的是,无法使用该功能以及PayPal账户可选 - 用于启用信用卡付款。 这里有来自PayPal的说明:'如果您启用了自动退货功能,并且已选择为新用户启用PayPal账户可选功能,则新用户将不会自动返回您的网站,但可以选择返回。 。 用户可以选择返回您的网站(PDT步骤)或停留在PayPal网站上。 用信用卡付款时,用户可以跳过PDT步骤,如果用户不点击“返回到商店链接”,总结它。

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

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

    链接地址: http://www.djcxy.com/p/27861.html

    上一篇: IPN vs PDT in Paypal

    下一篇: How to apply !important using .css()?