2015-07-20 56 views
0

我们创建了一个小应用来帮助用户管理某些PayPal订单,但IPN似乎并没有像预期的那样工作。我发现这个纸条以下网址的底部:IPN似乎无法按照PayPal文档的方式工作

https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNSetup/

"Even though you have not enabled receiving IPN messages in your Profile or 
you have reset your preference by turning off IPN messages, PayPal still  
sends IPN messages to the notification URL you specify for a specific 
payment." 

在此基础上,我们责成我们的beta测试者不担心自己的账户启用IPN,因为我们指定的通知URL通过按钮代码中的notify_url字段为用户的事务处理。但是没有发送IPN。

接下来,我们指示我们的测试者启用IPN,因为这样做需要您输入通知URL,并且用户不希望发布到我们系统的每笔交易的交易数据,我们也不希望这样做,我们指示他们输入“虚假”网址并禁止向其帐户中的该网址发送邮件。根据上面链接的说明,我们认为这也应该起作用,但事实并非如此。虽然您现在可以在IPN历史记录中看到该消息,但没有发送IPN。

所以我有点难倒在这里。我看到它的方式,我们只有2种选择,既不似乎理想......

  1. 指导我们的用户启用IPN和硬编码我们的IPN通知的URL到他们的配置文件设置。这意味着,如果他们已经在使用IPN做其他事情,他们不能做到这一点,即使他们能做到这一点,也意味着他们所做的每笔交易的数据都会影响我们的系统,而且用户和我们都不想这样做。

  2. 指示我们的用户在其帐户中输入“伪造”通知网址,并将邮件留给启用的URL,因为我们将使用自己的notify_url设置覆盖此信息。这会起作用,但是它会导致PayPal尝试将消息发送到通过我们的系统处理的任何交易的无效通知URL。我认为贝宝不希望这一点,它可能导致用户失去在未来由于不断IPN错误IPN访问等

任何人有任何想法吗?谢谢!

回答

1

根据您的经验,您需要启用IPN才能发送IPN,但是如果指定了notify_url,它将覆盖配置文件中的URL。

不过,您可以将任何实际脚本放在那里,而不是设置一个伪造的URL。只要把它做成一个完全没有任何东西的脚本。这样,发送到这里的IPN将“什么也不做”,除了发送200 OK返回到PayPal的服务器,显示IPN已成功接收。

如果他们已经在使用他们自己的IPN解决方案并且数据需要经历两者,那么您必须设置IPN转发器。如果需要,您可以菊花链式连接IPN网址,以便可以使用相同的数据。

就我个人而言,我喜欢在我的配置文件中设置一些全面的IPN设置,以便将任何IPN保存到我的数据库以进行日志记录。然后,如果有必要,可以使用通知URL来覆盖它。

+0

感谢您的回复。我们当然可以做到这一点,但由于商家只使用我们的系统来管理和处理他们的一些交易,他们中的很多人不希望PayPal的系统将交易详情发送给我们的系统,以使我们的系统未处理其余的交易。它似乎必须有一个更好的方法... – user3599501

+0

我在说的是他们可以在自己的虚拟主机上设置自己的“默认”IPN。它可以做任何事情,但成功的回应将返回到贝宝。然后,从您的应用程序中,您将使用通知来覆盖该通知,并且只有这些IPN才会转到您的服务器。 –

+0

是的,我们可以做到这一点,但我们的许多用户甚至没有自己的网站,这是他们使用我们的系统来处理这些订单的原因之一。但是,感谢您的意见,对于拥有自己网站并且不希望我们收到未通过我们系统处理的订单的所有交易详情的人来说,这肯定是一种选择。 – user3599501