【问题标题】:How to differentiate IPN and PDT request/response如何区分 IPN 和 PDT 请求/响应
【发布时间】:2013-07-26 22:44:23
【问题描述】:

我不是 php 专家,也不是 web 开发人员,但我用 php 开发了自己的购物车,并希望与 PayPal 集成。我已经阅读了很多资料并使用了一些运气不佳的示例代码(一半工作)。我仍然希望能够实现它,我的问题是:

  1. 如何区分请求/响应是 IPN 还是 PDT?
  2. 关于 IPN 与 PDT 的话题,回答说:

    使用 PDT,您可以立即收到通知,并且可以进行任何需要的额外处理并向用户显示确认页面。

    使用 IPN,即使用户的计算机在向您发送 PDT 之前发生爆炸,您也可以保证收到付款已收到的通知。

  3. 为什么不能使用 IPN 来显示确认页面?我知道IPN也可以由PayPal或用户触发,例如买家发起争议,由监听器处理通知,因此在这种情况下,它不能用于显示确认页面。但是既然你还用IPN指定了一个返回URL,那么为什么这个返回URL不能是一个显示确认消息或感谢消息的页面呢?前提是触发了新的付款已完成/完成等。或者没有办法知道谁发起了请求/响应?

  4. 既然IPN和PDT这么相似(其实我也不知道怎么区分),来回传递的信息是一样的,为什么不能用IPN的返回URL来显示消息比如感谢您的购买?

  5. 另外,对于问题2,(b)点,只要之前交易完成,即使用户的计算机爆炸,你是否仍会收到PDT消息? :)

我有点迷茫,请帮我解答,而不是问我“你为什么要这么做?”,因为如果我知道,我就不会在这里寻求帮助。如果您认为我完全没有抓住重点,请向我解释并帮助我。

非常感谢您提前提供的帮助。

【问题讨论】:

  • 谢谢马特,我会读一读(有两个年幼的孩子),希望你不介意我回来问你更多问题:)
  • @Matt 感谢您的链接,它说 IPN 不需要 ssl,这是否意味着 PDT 需要 ssl?非常感谢。

标签: php paypal


【解决方案1】:

老问题,但既然我找到了,其他人可能会。 HERE 回答了您的大部分问题。

如您所见,如果您想立即显示确认页面,Paypal 建议同时实现 IPN 和 PDT。

现在回答你的问题:

1) 您可以轻松区分 IPN 和 PDT:

  • 首先,它们需要您手动激活,因此您不能“意外”拥有一个。您或任何拥有您将要使用的 Paypal 帐户的人,需要在 Paypal/Profile/My Selling Tools/Website Preferences/Website Payment Preferences/PDT - Payment Data Transfer 中启用 PDT。为了使用 PDT,还必须设置自动返回(尽管您可以在每个事务的基础上覆盖自动返回)。

  • IPN 将使用 HTTP POST 发送数据,PDT 将作为 HTTP GET 数据发送附加到您的返回 URL 的数据。再次,巨大的差异。

  • 1234563特意要求的。

2) 没错,即使用户的电脑在付款后爆炸,IPN 也会确保您在发送 PDT 之前收到通知。

  • PDT 仅发送一次,如果用户返回您的站点,因为它将附加到您提供给 Paypal 的返回 URL(见上文)。如果用户在付款后拔出计算机,但在被重定向到您的站点之前(或计算机爆炸......),您将永远不会在 HTTP GET 中获得 PDT 数据!当然,你的服务器也可能会爆炸,你再也得不到 PDT 数据,但使用 IPN,如果你在几天内恢复服务器,你仍然会收到通知。

  • 相比之下,IPN 会发送多次,直到您向 Paypal 确认您已收到。因此,Paypal 会将 IPN 数据 HTTP POST 到您的服务器、侦听器脚本,直到您告诉他“好的,我知道了”。

  • IPN 可能需要一些时间,而 PDT 是即时的,但不可靠,这就是 Paypal 建议您同时实施的原因(请参阅上面的链接)。

3) 因为它不是即时的……虽然名字暗示了这一点。它可能需要比将用户重定向到您的站点所需的时间更长。引用我回答开头的链接:“但是,使用 IPN,客户完成付款与您的网站收到此事件通知的时间之间存在重大滞后。

4) 见上面的区别,它们不是那么相似。来回携带的数据不一样,IPN比PDT携带的数据多。此外,PDT 不能用于重复事件,例如订阅。 IPN 是唯一的选择。同样,请参阅顶部的链接

5) 我想我已经回答了这个问题,但简而言之,不,如果用户的计算机或您的服务器在他们有机会返回您的站点之前发生爆炸,您将无法获得 PDT 数据。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 2012-05-16
    • 1970-01-01
    • 2016-08-17
    • 2011-11-20
    • 2018-04-09
    • 2013-02-17
    • 2011-06-20
    相关资源
    最近更新 更多