代码之家  ›  专栏  ›  技术社区  ›  JohnIdol

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

  •  2
  • JohnIdol  · 技术社区  · 16 年前

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

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

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

    有人知道最细微的线索吗?

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

    感谢您的帮助!

    1 回复  |  直到 16 年前
        1
  •  2
  •   sixthgear    16 年前

    我会检查以确保您的Web服务器允许在您的IPN处理程序URL上发布请求。在这个示例中,我在链接的页面上使用了该示例的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错误的原因。

    如果您能够让IPN模拟器发出的请求工作,并且准备好进行沙盒测试,请确保您有正确的通知URL,并且在沙盒卖家的配置文件下启用了IPN。

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

    https://www.sandbox.paypal.com/cgi-bin/webscr 在您的servlet中。(您发布的示例中的URL是 https://www.paypal.com/cgi-bin/webscr

    推荐文章