-
Verben konjugieren - mit Coniuno spielend leicht gelernt
Verben konjugieren - mit Coniuno spielend leicht gelernt
Verben konjugieren mit Coniuno
Verben konjugieren in Deutsch, Niederländisch, Englisch, Französisch, Italienisch, Spanisch, Portugiesisch und Latein
Verben konjugieren in Deutsch, Niederländisch, Englisch, Französisch, Italienisch, Spanisch, Portugiesisch und Latein
-


PayPal – Automatische eMail Kaufbestätigung an den Kunden mit IPN


IPN – Instant Payment Notification


Zurück zur Übersicht

IX. Anhang, Übersicht der Workarounds


1.: PayPal Simulator liefert nur INVALID (mittlerweile von Paypal gelöst)

Mein Problem war das Sonderzeichen "ä" im Zeitstempel, z.B.: "Fri Dec 04 2015 17:49:52 GMT+0100 (Mitteleuropäische Zeit)"

Irgendwie konnte man im Simulator nicht einstellen, dass man Character Coding UTF-8 verwenden möchte (oder ich hatte es nicht gefunden).
Zwar kam nachher das Verification Result mit UTF-8, aber die eigentliche IPN Notification schien anders codiert zu sein.
Auch Verwendung von trim() und strtoupper(), um Probleme von eventuellen Leerzeichen oder Groß-Kleinschreibung zu vermeiden, hatten da nicht geholfen.

Ich hatte es so gelöst, dass ich für den Simulator ein zusätzliches utf8_decode in der Auswertung der IPN POST Daten hatte.
Allerdings funktionierte damit dann das Sandbox Testen nicht mehr, da hier dann doppelt UTF-8 kodiert wurde.
Also über ein DEFINE("USE_SIMULATOR",1) für den Simulator eingeschaltet.


$req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $value = utf8_decode($value); $req .= "&" . $key . "=" . $value; }

Das Problem ist aber mittlerweile scheinbar von PayPal gelöst, wodurch das utf8_decode nun seinerseits wieder zu einem Fehler führt.
Wenn ihr also auf einmal das Problem habt, dass eine zuvor funktionierende Simulation auf einmal nicht mehr geht, schmeisst das utf8_decode raus.



2.: HTTP/1.1 200OK

Laut PayPal Dokumentation muss euer IPN Listener als erstes ein "HTTP/1.1 200 OK" schicken, um so PayPal den erfolgreichen Empfang der IPN Notification zu bestätigen.
Hier braucht ihr aber keinen extra Code für schreiben – und solltet das auch nicht. Eure Webseite (oder besser gesagt, das http Protokoll hinter eurer Webseite) erledigt das automatisch, sobald die Socket Verbindung zu PayPal erfolgreich aufgebaut ist.


Auch kann es sein, dass das Socket nicht aufgebaut werden kann und ihr deshalb die IPN Notification nicht mit PayPal verifizieren könnt.
In dem Fall hättet ihr dann aber schon mit "200 OK" PayPal gesagt, dass alles erledigt ist.
Besser wäre es aber, in so einem Fall eine Fehlermeldung an PayPal zu schicken, damit PayPal die IPN Notification erneut schickt.
(Paypal versucht dann in immer länger werdenden Zeitabständen die Nachricht erneut zuzustellen)


Im Code (siehe auch Punkt 3. "Socket Open für Sandbox geht nicht):

if (USE_SANDBOX) { $paypal_url = "ipnpb.sandbox.paypal.com"; $port = "443"; } else { $paypal_url = "ipnpb.paypal.com"; $port = "443"; } $fp = fsockopen ('ssl://'.$paypal_url, $port, $errno, $errstr, 30); if (!$fp) { // socket couldn't be opened, request PayPal to resend header( "HTTP/1.1 400 Bad Request" ); }

Ehrlich gesagt, mir ist kein besserer Error Code als "400 Bad Request" eingefallen, und das PayPal Re-Send funktioniert tadellos hiermit.



3.: Socket Open für Sandbox geht nicht

Paypal ist in 2016 auf Secure Socket Layer (SSL) umgestiegen, womit neue URLs für die Verifikation der IPN Messages gelten.

Verwendet daher die folgenden Adressen (um eine Socket Verbindung zu PayPal zu öffnen).


Für den Code legt ihr am besten ein Define fest (USE_SANDBOX) und definiert Variablen für die PayPal URL und den Port, also:


if (USE_SANDBOX) { $paypal_url = "ipnpb.sandbox.paypal.com"; $port = "443"; } else { $paypal_url = "ipnpb.paypal.com"; $port = "443"; } $fp = fsockopen ('ssl://'.$paypal_url, $port, $errno, $errstr, 30);

Anstelle von fsockopen und co. könnt ihr natürlich auch mit cURL arbeiten.



4.: IPN Listener funktioniert nicht im Live Setup

Wenn im Live Setup die IPN Notifications nicht an euren IPN Listener zugestellt werden, schaut mal in das IPN Verlaufsprotokoll (dazu im PayPal Account anmelden, "mein Profil", "Verkäufereinstellungen", "Benachrichtigungen über Sofortzahlung", "Verlaufsseite für sofortige Zahlungsbestätigungen (IPN)").
Wenn ihr dort IPN Nachrichten habt, die nicht im Status "zugestellt" sind, könnt ihr euch die Fehlermeldung anschauen, indem ihr auf die Nachricht klickt, und dann den "HTTP Rückmeldungscode" anschaut:







Support:
Webmaster:
support@coniuno.de
webmaster@coniuno.de
Copyright © Helmut Bischoff 2005-2018. All rights reserved
 
Copyright H.Bischoff 2005-2018. All rights reserved