我会检查以确保您的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
)
我不知道405错误,但可以在不使用模拟器的情况下测试IPN。在沙盒环境中创建一个测试卖家帐户,然后创建一个按钮,并使用您刚刚创建的测试沙盒卖家帐户设置您的IPN通知。 – 2009-07-21 23:16:30
我试过了 - 我在表单中设置了notify_url,但是IPN通知并未触发! – JohnIdol 2009-07-21 23:57:13