如何为特定按钮禁用 IPN

How to disable IPN for a specific button

我们是 运行 WPMUdev 的会员插件,它要求在一个人的 PayPal 配置文件中设置默认的 IPN 列表 URL(因为即使订阅按钮包含 notify_url,但没有默认的 IPN 侦听器集,显然没有办法获得重复的付款取消消息)——而且一切正常。

问题是,PayPal 无法区分此插件生成的按钮和手动生成的按钮(例如一次性捐赠),并尝试将 IPN 消息发送到插件的侦听器,这完全混淆了,因为预期的元数据不会随它一起发送。 PayPal 然后重试 IPN,直到达到其限制。

有没有什么方法可以使用 notify_url(或其他一些 HTML 变量)来禁用特定按钮的 IPN 消息?或者我是否必须编写一个空的 IPN 侦听器来简单地确认 IPN 消息并将它们丢弃在地板上?

@EdSF 所说的是我推荐的。

设置一个 IPN 侦听器,除了 return 返回 PayPal 的 200 OK 之外什么都不做。它实际上不需要做任何事情。

然后在要"disable"的按钮中将URL设置为notify_url的值。

这样您就不会遇到来自 PayPal 的 IPN 循环试图攻击不存在的伪造 URL。

在我描述的场景中,很明显提供空值 notify_url 不起作用(默认 IPN 侦听器 URL 仍在使用)因此(除非更有经验的 PayPal 开发人员可以另行指示),正如@Andrew Angell 所说,有必要提供一个 IPN 侦听器来简单地确认 IPN 消息(如果需要,可能会记录它)。

请注意,如 PayPal's documentation 中所述,仅使用 HTTP 200 响应进行回复是不够的; PayPal 将继续重试 IPN,直到超过限制或配置的侦听器以 link.

中描述的适当肯定确认响应。

网络上有许多可用的 IPN 侦听器模板,所以这是一个选项,但这是我刚刚想到的另一个选项:

有一两个 IPN 多路复用器脚本,例如 this one,虽然我还没有尝试过,所以不能说它的质量或适用性。但我猜想使用预先存在的多路复用器脚本是明智的做法,因为 a) 它处理了我在 OP 中提出的问题,并且 b) 它提供了一个现成的机制来处理其他应用程序如果需要,可以使用 IPN。