testing - IPN 传送失败。 HTTP 错误代码 405 : Method Not Allowed

标签 testing servlets paypal paypal-ipn

我正在尝试测试我编写的处理 payapal IPN 通知的 servlet(我的 servlet 与此非常相似 example)- 即使在启用测试帐户中的所有设置后我正在使用 IPN 通知也是如此根本不开火。

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

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

有没有人有丝毫线索?

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

感谢任何帮助!

最佳答案

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

然后我远程登录到我的服务器。 (替换为您的服务器地址)

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

将以下内容粘贴到您的 telnet session 中。 (替换 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 处理程序也在记录无效请求,以便您知道请求是否已启动。

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

关于testing - IPN 传送失败。 HTTP 错误代码 405 : Method Not Allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162022/

相关文章:

python - SAWarning 测试失败

unit-testing - 通过嵌入式脚本从应用程序内部进行测试是个好主意吗?

javascript - 在本地计算机上使用 Javascript 轻松开发的最佳方法

c - 用 weak 属性在 c 中编写测试代码是不好的做法吗?

paypal - GetVerifiedStatus API 调用中的 matchCriteria NONE 可以吗?

java - PayPal 的未知主机异常

paypal - 在 Paypal Express Checkout 中预填充表单字段

java - Servlet 容器如何管理组成的 jsessionid?

java - 当值在java/servlets中有空格时读取复选框的值

java - 由以下代码创建的 DBCP 对象从未关闭