我们正在运行WPMUdev的Memberships插件,这需要在一个PayPal配置文件中设置默认的IPN lister URL(因为即使订阅按钮包含notify_url,没有默认的IPN侦听器设置,显然也无法获得定期付款取消消息) - 一切正常。
麻烦的是,PayPal无法分辨这个插件生成的按钮和手动生成的按钮(例如一次性捐赠)之间的区别,并尝试将IPN消息发送到插件的监听器,因为预期的元数据会使其完全混淆不随身携带。然后,PayPal重试IPN,直到达到其限制。
是否有某种方法可以使用notify_url
(或其他一些HTML变量)来禁用特定按钮的IPN消息?或者我是否必须编写一个空的IPN侦听器,它只是确认IPN消息并将其丢弃在地板上?
答案 0 :(得分:1)
@EdSF说的是我推荐的内容。
设置一个IPN监听器,除了将200 OK返回PayPal之外什么都不做。它不必实际做任何事情。
然后在要“禁用”的按钮中将该URL设置为notify_url的值。
这样你就不会得到PayPal的IPN循环,试图找到一个不存在的虚假URL。
答案 1 :(得分:-1)
在我所描述的场景中,很明显提供null notify_url
不起作用(仍然使用默认的IPN侦听器URL)(除非更有经验的PayPal开发人员可以另外指示),并且正如@Andrew Angell所说,有必要提供一个简单地确认IPN消息的IPN监听器(如果需要,可以记录它)。
请注意,如PayPal's documentation中所述,仅回复HTTP 200响应是不够的; PayPal将继续重试IPN,直到超出限制或配置的侦听器以该链接中描述的相应肯定确认进行响应。
网上有任意数量的IPN侦听器模板,所以这是一个选项,不过这是另一个刚刚发生的事情:
有一个或两个IPN多路复用器脚本,例如,this one,虽然我还没有尝试过,所以不能说它的质量或适用性。但我猜想使用预先存在的多路复用器脚本是明智之举,因为a)它处理我在OP中提出的问题,以及b)它提供了一个现成的机制来处理其他应用程序,如果需要,可以使用IPN。