Paypal IPN funktioniert plötzlich nicht mehr

dandelion

Aktives Mitglied
Hallo

Ich benutze auf meiner Webseite für das Abwickeln von Zahlungen das von Paypal
angebotene System "Instant Payment Notification". Man wird nach der Zahlung auf der Paypal-Webseite
wieder auf die eigene Webseite umgeleitet und muss anschliessend mit einem POST-Befehl zum Paypal-Server
die Zahlung validieren.

Das hat seit 3 Wochen gut funktioniert, aber seit gestern funktioniert es plötzlich nicht mehr, d.h. anstelle eines "SUCCESS" als Rückgabewert erhalte ich nun "FAIL".

Aus den Anleitungen von Paypal werde ich nicht schlau, d.h. es ist nicht klar, weshalb ein "FAIL" gesendet wird.
Die Scripts (PHP) auf meinem Server sind unverändert.

Verwendet jemand auch IPN ? Ist es "normal", dass es zeitweise nicht funktioniert ?
Wie soll ich vorgehen, um das Problem zu lösen ?

Besten Dank für Eure Hilfe !
 
Du kriegst doch von PayPal nicht bloß ein Fail, sondern noch zusätzlich eine kurze und eine lange Fehlerbeschreibung zurück.

Poste mal die.

Das kann ein temporäres Problem bei PayPal sein, dein Schlüssel wurde gesperrt - oder etwas im gesendeten Code ist falsch.

Es kann auch Fälle geben, wo der Sendecode falsch zusammengebaut wird, das aber zunächst nicht auffällt, weil die Eingaben 'passend' sind. Später knallt das dann plötzlich.
 
Könnte es sein, dass die Encoding-Einstellungen auf PayPal irgendwie "falsch" sind? Es können mit PayPal Probleme auftreten wenn Umlaute gesendet werden. Vielleicht probierst du mal in den PayPal-Einstellungen unter "Kodierung" alles auf UTF-8 zu stellen...

Ich nehme an der von PHP-Generierten Werte stimmen nicht mit dem vom IPN-System angenommenen Werte überein. Und wenn man das Standard-Script verwendet könnte es deshalb am "Encoding" liegen.

Mein Profil -> Sprachcodierung -> Weitere Optionen -> Codierung UTF-8
Soll diese Codierung auch für Daten verwendet werden, die PayPal an Sie sendet (z. B. sofortige Zahlungsbestätigungen:
Ja

Wichtig ist, dass PHP die Werte ebenfalls in UTF-8 empfängt und sendet.

--

Könnte natürlich auch ein anderes Problem sein!
 
@Juergen:
Danke für Deine Antwort.
Mir ist jedoch nicht bekannt, dass es eine (kurze und lange) Fehlermeldung gibt.
Wie könnte ich diese denn auslesen ?
Ich verwende den von Paypal zur Verfügung gestellten Muster-PHP-Code für IPN Post back, siehe Auszug unten.


while (!feof($fp))
{
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0)
{
// read the header
$headerdone = true;
}
else if ($headerdone)
{
// header has been read. now read the contents
$res .= $line;
}
}
// parse the data
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) (--> hier kommt eben FAIL und nicht SUCCESS ...)

 
PayPal gibt eine Name-Value-Liste von Werten zurück.

Die sind (bei mir) per '&' getrennt und nutzen immer die Form

CODE Name=Wert


Wenn ich damit plus mit meinen bescheidenen PHP-Kenntnissen (ich hatte das für server-daten komplett in .NET gebaut) den Code ansehe, dann


QUOTE (dandelion @ Sa 26.01.2008, 14:59)
while (!feof($fp))
{
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0)
{
// read the header
$headerdone = true;
}
else if ($headerdone)
{
// header has been read. now read the contents
$res .= $line;
}
}

print $res;

// parse the data
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0)


also einfach einmal $res ausgeben lassen.

Allerdings scheint dieser Aufruf etwas Zeilengetrenntes zurückzugeben (explode \n). Das wird irgendeine andere Logik sein, ich verwende IPN ohnehin nicht.
 
Wieso kommt FAIL? Wenn es nicht verifiziert werden konnte antwortet PayPal eigentlich mit INVALID.

Bisher ist INVALID bei uns noch nie passiert. Aber einmal konnte unser Server kein Postback an PayPal senden.
 
@jAuer:
PayPal antwortet beim PostBack nur mit einem HTTP-Header und als Content nur ein Wort, ohne irgendwelcher Formatierung.
 
QUOTE (Maik @ Sa 26.01.2008, 16:37)PayPal antwortet beim PostBack nur mit einem HTTP-Header und als Content nur ein Wort, ohne irgendwelcher Formatierung.

Ich kriege bei PayPal Ausdrücke der Form


CODE TIMESTAMP=2008-01-26T15:57:21Z&CORRELATIONID=30b8307564b80&
ACK=Success&VERSION=2.300000&BUILD=494879&TOKEN=EC-6SU74038NE476414M&
TRANSACTIONID=7RP97528007833736&TRANSACTIONTYPE=expresscheckout&
PAYMENTTYPE=instant&ORDERTIME=2008-01-26T15:57:14Z&AMT=23.00&
CURRENCYCODE=USD&TAXAMT=3.67&PAYMENTSTATUS=Pending&
PENDINGREASON=multicurrency&REASONCODE=None


zurück, hier mit Umbruch, damit das auf der Seite bleibt.

Wenn ein Fehler drin ist, dann kommt eine Short- und eine Long-Description als relativer Klartext zurück.

PS: Das sind zurückgeschickte Antworten nach API-Aufrufen, die ermöglichen wohl ein etwas komplexeres Handling.
 
Das ist der IPN-Post, dein Script muss das bearbeiten, und einen Postback an PayPal schicken... und das FAIL von ihm ist die Antwort auf das Postback, nicht das IPN-Post
 
IPN funktioniert nun plötzlich wieder (Meldung SUCCESS anstelle FAIL), nachdem es nun 2 Tage nicht funktioniert hat.
Identische Zahlungen, welche nicht funktioniert haben, funktionieren nun plötzlich wieder.
Es scheint also höchstwahrscheinlich ein Problem bei Paypal selber gewesen zu sein - das habe ich auch von
Anfang an vermutet, da das Ganze ja 3 Wochen stabil lief.
Trotzdem irgendwie unbefriedigend, da ja das Verarbeiten von Zahlungseingängen eine äusserst wichtige Funktionalität
ist - die ganze Angelegenheit hat mich einige Nerven und verärgerte Kunden gekostet - und das schlimmste ist: wann wird es wieder passieren ?
Besten Dank an alle für die Tipps und Hinweise.
 
Zurück
Oben