2009-07-21 121 views
2

我想測試一個我編寫的處理payapal IPN通知的servlet(我的servlet非常類似於這個example) - 事情甚至在啓用測試帳戶中的所有設置之後我是使用IPN通知根本不會觸發。IPN傳送失敗。 HTTP錯誤代碼405:方法不允許

然後我發現,沙盒中顯然是測試IPN的唯一方式是通過IPN模擬器。我試圖使用它,但我得到:

IPN交付失敗。 HTTP錯誤代碼405:不允許的方法

有沒有人有絲毫的線索?

另外我正在尋求ANY由於IPN模擬器很爛(你選擇它的任何選項會重置所有字段等等),因此可以直接測試IPN處理程序。

任何幫助表示讚賞!

+0

我不知道405錯誤,但可以在不使用模擬器的情況下測試IPN。在沙盒環境中創建一個測試賣家帳戶,然後創建一個按鈕,並使用您剛剛創建的測試沙盒賣家帳戶設置您的IPN通知。 – 2009-07-21 23:16:30

+0

我試過了 - 我在表單中設置了notify_url,但是IPN通知並未觸發! – JohnIdol 2009-07-21 23:57:13

回答

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模擬器獲取正在運行的請求,並準備進入沙箱測試,請確保您擁有正確的Notify URL,並且在沙盒賣家的配置文件下啓用了IPN。

此外,請確保您的IPN處理程序也記錄INVALID請求,以便您知道該請求是否已啓動。

最後,確保您的servlet中的IPN驗證URL設置爲https://www.sandbox.paypal.com/cgi-bin/webscr。 (您發佈的示例中的URL是https://www.paypal.com/cgi-bin/webscr