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

Testing IPN传递失败。HTTP错误代码405:不允许使用方法,testing,servlets,paypal,paypal-ipn,Testing,Servlets,Paypal,Paypal Ipn,我正在尝试测试我编写的一个servlet,该servlet处理payapal IPN通知(我的servlet与此非常类似)-即使在启用了我使用的测试帐户中的所有设置之后,IPN通知也不会触发 然后我发现,显然在沙箱中,测试IPN的唯一方法是通过IPN模拟器。我正在尝试使用它,但我得到: IPN传递失败。HTTP错误代码405:不允许使用方法 有人有一点线索吗 此外,我正在寻求任何建议,以便以一种简单的方式测试IPN处理程序,因为IPN模拟器有点差劲(您选择的任何选项都会重置所有字段,以此类推)

我正在尝试测试我编写的一个servlet,该servlet处理payapal IPN通知(我的servlet与此非常类似)-即使在启用了我使用的测试帐户中的所有设置之后,IPN通知也不会触发

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

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

有人有一点线索吗

此外,我正在寻求任何建议,以便以一种简单的方式测试IPN处理程序,因为IPN模拟器有点差劲(您选择的任何选项都会重置所有字段,以此类推)


感谢您的帮助

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

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

将以下内容粘贴到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
若并没有看到200状态,则表示应用程序未正确处理POST请求,这可能是405错误的原因

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

如果您能够从IPN模拟器获得请求,并准备好进行沙箱测试,请确保您具有正确的通知URL,并且在沙箱卖家的配置文件下启用了IPN

另外,请确保IPN处理程序也记录了无效的请求,以便知道请求是否已启动


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

此外,IPN模拟器可能是快速测试IPN请求的最佳方法。但是,如果您使用适当的IPN处理程序构建应用程序,并开始使用沙箱帐户进行测试,则应该触发IPN请求。请确保您在sellers沙箱帐户下启用了该功能。另外,我对servlet了解不多,但您是否在您的帐户中实现了doPost方法?谢谢你的帮助,我相信你是对的,我只在我的servlet中实现了doGet-请在答案中集成它,我将测试并标记为已接受。此外,我在配置文件即时付款通知下启用了该功能,但它似乎根本没有启动!添加了关于doPost()的信息,以及尝试启动沙盒IPN的其他信息。我不知道405错误,但您可以在不使用模拟器的情况下测试IPN。在沙盒环境中创建一个测试卖家帐户,然后创建一个按钮,并使用刚才创建的测试沙盒卖家帐户设置IPN通知。我尝试了-我正在表单中设置notify_url,但IPN通知未触发!
Trying myserver.com...
Connected to myserver.com.
Escape character is '^]'.
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