IPN传递失败。 HTTP错误代码405:不允许的方法

时间:2009-07-21 22:09:19

标签: testing servlets paypal paypal-ipn

我正在尝试测试我编写的一个处理payapal IPN通知的servlet(我的servlet与此example非常相似) - 甚至在启用测试帐户中的所有设置之后我正在使用IPN通知根本没有解雇。

然后我发现,显然在沙盒中测试IPN的唯一方法是通过IPN模拟器。我正在尝试使用它,但我得到了:

IPN投放失败。 HTTP错误代码405:不允许的方法

有没有人有丝毫的线索?

此外,我正在寻求任何建议,以便以简单的方式测试IPN处理程序,因为IPN模拟器很糟糕(您选择的任何选项都会重置所有字段等等)。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

我会检查以确保您的Web服务器在您的IPN处理程序URL上允许POST请求。在此示例中,我在您链接的页面上使用了该示例的PHP版本,并将脚本放在/ipn.php

然后我telnet到我的服务器。 (替换为您的服务器地址)

$ telnet myserver.com 80
Trying myserver.com...
Connected to myserver.com.
Escape character is '^]'.

将以下内容粘贴到您的telnet会话中。 (替换ipn.php和myserver.com)。在最后一个命令后添加一个空行。

POST /ipn.php HTTP/1.1
Host: myserver.com
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
HTTP/1.1 200 OK

如果您没有看到200状态,则表示您的应用程序未正确处理POST请求,这可能是405错误的原因。

您应该确保在servlet中实现doPost()方法,以及doGet()。

如果您能够从IPN模拟器获取请求,并准备继续进行沙盒测试,请确保您拥有正确的通知URL,并且在沙盒卖家的个人资料下启用了IPN。

此外,请确保您的IPN处理程序也记录了INVALID请求,以便您知道该请求是否已启动。

最后,确保您的servlet中的IPN验证URL设置为https://www.sandbox.paypal.com/cgi-bin/webscr。 (您发布的示例中的网址为https://www.paypal.com/cgi-bin/webscr