2009-07-21 141 views
2

我想测试一个我编写的处理payapal IPN通知的servlet(我的servlet非常类似于这个example) - 事情甚至在启用测试帐户中的所有设置之后我是使用IPN通知根本不会触发。IPN传送失败。 HTTP错误代码405:方法不允许

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

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

有没有人有丝毫的线索?

另外我正在寻求ANY由于IPN模拟器很烂(你选择它的任何选项会重置所有字段等等),因此可以直接测试IPN处理程序。

任何帮助表示赞赏!

+0

我不知道405错误,但可以在不使用模拟器的情况下测试IPN。在沙盒环境中创建一个测试卖家帐户,然后创建一个按钮,并使用您刚刚创建的测试沙盒卖家帐户设置您的IPN通知。 – 2009-07-21 23:16:30

+0

我试过了 - 我在表单中设置了notify_url,但是IPN通知并未触发! – JohnIdol 2009-07-21 23:57:13

回答

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模拟器获取正在运行的请求,并准备进入沙箱测试,请确保您拥有正确的Notify URL,并且在沙盒卖家的配置文件下启用了IPN。

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

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