0

我不是 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消息?:)

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

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

4

1 回答 1

0

老问题,但既然我找到了,其他人可能会。您的大部分问题都在这里得到解答。

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

现在回答你的问题:

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

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

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

  • 您需要指示 Paypal 您希望使用 IPN 并让他们知道notify_url参数,这将是您服务器上的侦听器(处理程序)脚本,因此,如果没有您特别要求,您将无法获得 IPN。

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 数据。

希望有帮助。

于 2015-12-19T14:53:02.283 回答