PayPalPlus geht seit 02.11. nicht - Script dreht fröhlich seine Runden

Urplötzlich am 02.11.17 ist PayPalPlus ausgestiegen (OXID CE499). Ich habe alles versucht. Es liegt am übermittelten Ländercode. Hier die Browser-Meldung (Zeile 4!!!):

“Uncaught TypeError: Cannot read property ‘setAttribute’ of null
at index.php?cl=payment:702
index.php?cl=payment:563 Zok\HTML\JQuery::QueueRender: document ready
cb=gapi.loaded_0:454 Error: delivery_country should be a CLDR code of length 2!
(anonymous) @ cb=gapi.loaded_0:454
cb=gapi.loaded_0:455 Error: Invalid estimated_delivery_date. Make sure the date format is YYYY-MM-DD”

Jetzt die Antwort vom PayPal Business-Support…Ich kann damit nix anfangen…

"Aufgrund der Fehlermeldung ist es eher unerheblich ob Sie etwas geändert haben, Oxid einen Bug behoben hat oder etwas anderes vorgefallen ist. Die Länder Information in all unseren APIs basiert auf einem 2-stelligen Buchstabenkombination und dies war schon immer so. Sollte Ihre Integration bis vor kurzem noch richtig die Eingabe des Kunden Intern auf diese 2 Stellen umgeschrieben haben und nun nicht mehr, dann sollte dort die Lösung des Problems liegen. Dies sind die akzeptierten Country Codes in REST, welche die API von PP+ ist:
https://developer.paypal.com/docs/integration/direct/rest/country-codes/?mark=country%20code

Da Oxid v4.9.9 inzwischen schon gut 17 Monate alt ist, sollte sich ein Update an der Stelle gut machen.
Hier sei auch gesagt: Oxid veröffentlichte am 2/11/2017 eine neue Version, welches genau der Tag ist, an dem das Problem auftrat. Kann es an der Stelle nicht sein, dass sich doch etwas in Ihrer Integration geändert hat, ohne das Sie es sahen und wenn nicht lokal dann wohl eher bei Oxid selbst und wenn diese nun Ihre Kommunikation anders mit uns handhaben, dann ist genau dort das Problem mit veralteten Versionen wie Ihrer."

Wieso hört das Modul schlagartig auf zu funktionieren, wenn man nichts ändert???

Hallo @murmeltier,

Du müsstest bitte herausfinden, in welchem Land die Order ausgelöst wurde, die per Paypal bezahlt werden sollte. Dieses Land findest Du im Shop-Admin -> Grundeinstellungen -> Länder. Was steht im Feld ISO2?

Bei ISO 2 steht für Deutschland DE

Dann passiert das bei wirklich jeder Bestellung, auch aus Deutschland?

Scheint so. Aber warum wenn man selbst nichts ändert. Oder hat Paypal was geändert ohne es zu kommunizieren…

Sieht für mich nicht aus, als hätte PayPal etwas geändert. Die nehmen halt nur ISO2-codierte Länderkennungen an. Meine Vermutung ist, dass jemand mit einem exotischen Land versucht hat zu bestellen, für das PP+ nicht freigeschaltet ist.

Aber wie schiesst man so das Script ab? In der Ländertabelle sind alle korrekt mit ISO 2 hinterlegt. Interessant ist, das die API Timeout Einstellung nicht greift. Was wenn Griechenland statt GR mit EL kommt. Das ist ja bei diesem Land so eine Sache…habs noch nicht prüfen können. Aber dann müsste doch bei Auswahl eines anderen Landes alles wieder laufen…

Bin alle Länder durchgegangen ISO 2 Codes alle korrekt.

Ja. Aber was ist mit der Order, die den Fehler verursacht hat? Passiert es jedes Mal, passiert es auch bei Deinen Bemühungen, das nachzustellen? Oder war es nur diese eine Geschichte (als ein Kunde aus Grönland versucht hat, per PP+ einzukaufen)? Das geht mir aus dem Thread noch nicht hervor.

Sollen wir vielleicht mal einen Testkauf über PP+ in Deinem Shop machen? Dann her mit der Shop-Adresse!

Ich habe es mit meiner Admin Adresse getestet. Ich schalte das Modul mal scharf. www.Survivor-food.de Warenkorb bitte über 20.-

Kann losgehen

Kannst wieder ausknipsen, ich sehe das Problem. Die Modulversion, die Du benutzt, ist die aktuelle 2.0.4 von hier? https://exchange.oxid-esales.com/Order-and-Delivery/Payment/PayPal-PLUS-2-0-3-Stable-CE-4-7-x-4-10-x.html

Diese Version sollte aktuell für alle Shops v4.7 bis v4.10 funktionieren.

Hat sie auch…bis gestern…bin mal gespannt was Du rausgefunden hast und wie man das Problem löst :wink:

Ähm… kannst Du vielleicht noch meine Frage beantworten? Welche Version des PP±Moduls benutzt Du aktuell in Deinem Shop?

Ist die 2.0.4

Hat Dein Hosting-Provider ggf. etwas an den Systemumgebungen geändert, Stichworte: PHP-Version, cURL, OpenSSL?

Habe keine Info darüber. Ich werde mich am Montag mit denen in Verbindung setzen. Hast Du Input für mich, damit ich denen das Problem schildern kann? Nutzt Dir eine PHPinfo was?

Dir nützt die bestimmt etwas. PHP-Version und ob PHP-cURL installiert ist, sollte man daraus ablesen können. Was ich komisch finde ist, dass es keinerlei Fehlermeldung bis zum Timeout gibt. Normalerweise werden PayPal-Fehler direkt durchgeleitet, der Kunde weiss dann Bescheid “Achtung, Zahlungsart im Moment nicht möglich” o.ä. Aber hier passiert ja gar nix.

PHP Version 5.6.30-0+deb8u1

OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.1t 3 May 2016
OpenSSL Header Version OpenSSL 1.0.1t 3 May 2016
Openssl default config /usr/lib/ssl/openssl.cnf
Directive Local Value Master Value
openssl.cafile no value no value
openssl.capath no value

cURL support enabled
cURL Information 7.38.0
Age 3
Features
AsynchDNS Yes
CharConv No
Debug No
GSS-Negotiate No
IDN Yes
IPv6 Yes
krb4 No
Largefile Yes
libz Yes
NTLM Yes
NTLMWB Yes
SPNEGO Yes
SSL Yes
SSPI No
TLS-SRP Yes
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host x86_64-pc-linux-gnu
SSL Version OpenSSL/1.0.1t
ZLib Version 1.2.8
libSSH Version libssh2/1.4.3

Warte noch auf Feedback vom Provider…

Das sind im Wesentlichen die Standardeinstellungen eines aktuellen debian stable … das sieht bei mir auch so aus. Da es bei mir läuft, kann man das wohl als Fehlerquelle ausschließen.

[Nachtrag]

Ganz dumme Idee (aber wer weiss, Pferde, Apotheke und kotzen …): guck mal bitte in den Settings des Moduls unter dem Punkt “Paypal Experience Profile Einstellungen”, welcher Ländercode (es solle “de” sein) da eingestellt ist.

Und dann schalte bitte unter “Logger, Debugger und Verbindungseinstellungen” das Logging auf “Debug” … die PP+ API ist sehr gesprächig, wenn man sie lässt … das Log ist dann deutlich aussagekräftiger als die von dir gepostete Meldung.

Sandbox beim testen sollte klar sein, denke ich :slight_smile: