2

我正在尝试测试我编写的处理 payapal IPN 通知的 servlet(我的 servlet 与此示例非常相似) - 即使在启用测试帐户中的所有设置后,我使用的 IPN 通知也没有触发。

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

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

有没有人有一点线索?

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

任何帮助表示赞赏!

4

1 回答 1

2

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

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

$ 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 请求,以便您知道该请求是否已启动。

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

于 2009-07-21T23:11:16.030 回答