Heim >Backend-Entwicklung >PHP-Tutorial >Schneller Tipp: Lösung für PayPal IPN immer wieder 'ungültig' zurückgibt
Wenn Sie sich mit dem IPN -Simulator von PayPal entwickeln, können Sie in der Situation stoßen, in der es bei der Überprüfung der Nachricht immer wieder „ungültig“ zurückgibt, unabhängig von der Codierung, die Sie festgelegt haben, oder alle Bedingungen, die übereinstimmen und gültig sind.
Das PayPal Developers -Team ist berüchtigt dafür, alle Anfragen zu ignorieren, und die Dokumente sind bekanntermaßen schwer zu lesen. Daher ist das Debuggen dieser Probleme unglaublich schwierig und können Sie Stunden für abrechnungsfähige Stunden kosten. Ich bin sogar so weit gegangen, einen Live -Server für das Testen des IPN -Simulators eingerichtet zu haben, weil Angst NGROK beim lokalen Testen schuld war, und sogar ein Zertifikat zum Endpunkt hinzugefügt, um HTTPS in Gang zu bringen - keine Würfel. Am Ende war die Lösung - wie normalerweise der Fall - einfach, aber dunkel.
Das Symptom (das Versagen) wird durch das Datumsfeld verursacht, wenn es eine Zeitzon -Kennung enthält. All dies wird jedoch durch die Tatsache verursacht, dass PHP zwei verschiedene URL-Codierungs- / Dekodierungsfunktionen hat: RAW und NICHT.
Hier ist ein Beispiel.
Sagen wir, wir haben ein Datum im IPN -Simulator wie folgt:
Fri Aug 19 2016 09:25:00 GMT+0100 (GMT Daylight Time)
Dies kommt zum Ende des Hörers (in Ihrem PHP -Code) wie folgt:
Fri%20Aug%2019%202016%2009%3A25%3A00%20GMT+0100%20%28GMT%20Daylight%20Time%29
Der Substring GMT 0100 ist problematisch, da die PHP -Funktion Urldecode den als Speicherplatz interpretiert, sodass er dekodiert wird in:
Fri Aug 19 2016 09:25:00 GMT 0100 (GMT Daylight Time)
beachten
Wenn dies für die Überprüfung an PayPal zurückgegeben wird, fällt die Überprüfung fehl, da sie im Feld nicht mehr der gleiche Wert hat-das fehlt. Es ist ein sehr, sehr kleines Detail und unglaublich schwer zu erkennen, wenn Sie die Feldwerte von Handinspektionen auswirken, aber es ist da. Dies reicht nach PayPal -Dokumenten aus, um die Überprüfung zurückzusetzen.Es gibt zwei Lösungen für dieses Problem:
häufig gestellte Fragen (FAQs) zu PayPal IPN
Wie kann ich den IPN -Simulator verwenden, um meinen Hörer zu testen? In Ihrem PayPal Developer -Konto und zur IPN -Simulator -Seite navigieren. Geben Sie Ihre Listener -URL ein und wählen Sie den IPN -Nachrichtentyp aus, den Sie testen möchten. Klicken Sie auf "IPN senden", um eine gefälschte IPN -Nachricht an Ihren Listener zu senden.
Wie kann ich die Sicherheit meiner IPN -Transaktionen sicherstellen? Die IPN -Nachrichten. Verwenden Sie auch eine sichere Verbindung (HTTPS) für Ihre Hörer-URL und halten Sie Ihre PayPal-Konto-Anmeldeinformationen vertraulich. Der Befehl „cmd = _notify-validat“ wird verwendet, um die IPN-Nachricht zu validieren. Wenn Sie die IPN -Nachricht mit diesem Befehl an PayPal zurücksenden, antwortet PayPal mit entweder "verifiziert", wenn die Nachricht authentisch oder "ungültig" ist, wenn dies nicht der Fall ist. ? Sie sollten Ihren Hörer so entwerfen, dass Sie diese doppelten Nachrichten verarbeiten und eine doppelte Verarbeitung von Transaktionen verhindern. Wenn Sie auch nach der Validierung der IPN -Nachricht eine "ungültige" Antwort erhalten, zeigt sie eine Diskrepanz in den Transaktionsdaten an. Überprüfen Sie die Transaktionsdetails mit Ihrem PayPal-Konto und überprüfen Sie in der IPN-Nachricht nach Fehlern.
Das obige ist der detaillierte Inhalt vonSchneller Tipp: Lösung für PayPal IPN immer wieder 'ungültig' zurückgibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!