我正在尝试测试我编写的一个处理payapal IPN通知的servlet(我的servlet与此example非常相似) - 甚至在启用测试帐户中的所有设置之后我正在使用IPN通知根本没有解雇。
然后我发现,显然在沙盒中测试IPN的唯一方法是通过IPN模拟器。我正在尝试使用它,但我得到了:
IPN投放失败。 HTTP错误代码405:不允许的方法
有没有人有丝毫的线索?
此外,我正在寻求任何建议,以便以简单的方式测试IPN处理程序,因为IPN模拟器很糟糕(您选择的任何选项都会重置所有字段等等)。
任何帮助表示赞赏!
答案 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
)