2009-07-21 8 views
2

Ich versuche, ein Servlet zu testen Ich schrieb, dass eine Payapal IPN-Benachrichtigung verarbeitet (mein Servlet ist sehr ähnlich zu diesem example) - die Sache ist auch nach dem Aktivieren aller Einstellungen im Testkonto bin ich Die IPN-Benachrichtigung wird überhaupt nicht ausgelöst.IPN-Übermittlung fehlgeschlagen. HTTP-Fehlercode 405: Methode nicht zulässig

Ich habe dann herausgefunden, dass anscheinend in der Sandbox die einzige Möglichkeit, IPN zu testen, durch den IPN-Simulator ist. Ich versuche, es zu benutzen, aber ich bekomme:

IPN Lieferung fehlgeschlagen. HTTP-Fehlercode 405: Methode nicht zulässig

Hat jemand den geringsten Hinweis?

Auch ich suche ANY Beratung zum Testen IPN Handler in einer direkten Art und Weise, da der IPN-Simulator Art von saugt (jede Option, die Sie wählen, setzt alle Felder zurück und so weiter).

Jede Hilfe wird geschätzt!

+0

Ich weiß nicht über den Fehler 405, aber Sie können IPN testen, ohne den Simulator zu verwenden. Erstellen Sie ein Testverkäuferkonto in der Sandbox-Umgebung, erstellen Sie dann eine Schaltfläche und richten Sie Ihre IPN-Benachrichtigung mit dem Test-Sandbox-Verkäuferkonto ein, das Sie gerade erstellt haben. –

+0

Ich habe es versucht - ich richte notify_url im Formular ein, aber die IPN-Benachrichtigung wird nicht ausgelöst! – JohnIdol

Antwort

2

Ich würde überprüfen, um sicherzustellen, dass Ihr Web-Server POST-Anfragen auf Ihrem IPN-Handler-URL erlaubt. In diesem Beispiel habe ich die PHP-Version des Beispiels auf der verknüpften Seite verwendet und das Skript unter /ipn.php platziert.

Ich telnet dann zu meinem Server. (Ersetzen Sie mit Ihrem Server-Adresse)

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

Fügen Sie den folgenden in Ihre Telnet-Sitzung. (Ersetzen Sie ipn.php und myserver.com). Fügen Sie nach dem letzten Befehl eine Leerzeile hinzu.

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 

Wenn Sie einen 200-Status nicht sehen, bedeutet dies, Ihre Anwendung ordnungsgemäß POST-Anfragen nicht Handling, das eine wahrscheinliche Ursache für die 405 Fehler ist.

Sie sollten sicherstellen, dass Sie eine doPost() - Methode in Ihrem Servlet implementieren, sowie eine doGet().

Wenn Sie in der Lage sind, die Anfragen vom IPN-Simulator abzurufen und zum Sandbox-Test überzugehen, stellen Sie sicher, dass Sie die richtige Notify-URL haben und IPN im Sandbox-Verkäuferprofil aktiviert ist.

Stellen Sie außerdem sicher, dass IPN Handler auch INVALID-Anforderungen protokolliert, sodass Sie wissen, ob die Anforderung überhaupt initiiert wurde.

Stellen Sie abschließend sicher, dass die IPN-Verifikations-URL in Ihrem Servlet auf https://www.sandbox.paypal.com/cgi-bin/webscr eingestellt ist. (Die URL in dem von Ihnen geposteten Beispiel ist https://www.paypal.com/cgi-bin/webscr)

+0

Darüber hinaus ist der IPN-Simulator wahrscheinlich der beste Weg, um IPN-Anfragen schnell zu testen.Wenn Sie jedoch Ihre App mit einem geeigneten IPN-Handler erstellen und mit Sandbox-Konten testen, SOLLTEN die IPN-Anforderungen abgefeuert werden. Stellen Sie sicher, dass Sie diese Funktion im Verkäufer-Sandbox-Konto aktivieren. – sixthgear

+1

Auch ich weiß nicht viel über Servlets, aber haben Sie eine DoPost-Methode in Ihrem implementiert? http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/servlet.html – sixthgear

+0

Vielen Dank für Ihre Hilfe, ich glaube, Sie haben Recht, ich habe nur doGet in meinem Servlet implementiert - bitte integrieren Sie dies in die Antwort, ich ' ll testen und als akzeptiert markieren. – JohnIdol