Neu PayPal Plugin v1.07 Open Beta

JulianG

Administrator
Mitarbeiter
14. November 2013
1.254
396
Im Support müssen wir von den offiziellen Vorgaben ausgehen. Der JTL-Shop4 ist noch nicht für PHP 7.1 freigegeben, siehe dazu: https://guide.jtl-software.de/JTL-Shop_neu_installieren#Systemvoraussetzung
Daher kommt vermutlich die Aussage, dass hier auf PHP 7.0 zurückgegriffen werden sollte.

Unabhängig davon ob der Fehler durch PHP 7.1 verursacht wird oder nicht, muss er natürlich entsprechend untersucht werden: https://issues.jtl-software.de/issues/SHOP-2137
Bisher ist das erst der zweite Fehler der in Verbindung mit PHP 7.1 gebracht wird.
 

zttom

Offizieller JTL-Partner
ZTBanner
13. Februar 2018
12
15
Overath
Als Technologiepartner und Hoster mit dem betroffenen Kunden habe ich den Fehler nun mal analysiert und hoffe, dass der Fehler dadurch schnell mit einem Hotfix behoben werden kann, das Ticket geschlossen werden kann und solche Fehler nicht mehr auftreten ;) @JTL: Bitte an Eure Entwickler weitergeben!

Die Lösung liegt eigentlich schon in den Zeilen, die bbfdesign schon geschickt hatte. Entscheidend sind folgende Zeilen:

"Error: Wrong parameters for Exception([string $message [, long $code [, Throwable $previous = NULL]]]) in"

und

/var/www/virtual/.../htdocs/includes/plugins/jtl_paypal/version/106/paymentmethod/class/PayPalPlus.class.php(569): Exception->__construct('Unhandled payme...', 'approved') #1

Das Plugin schmeisst in der Zeile 569 von htdocs/includes/plugins/jtl_paypal/version/106/paymentmethod/class/PayPalPlus.class.php eine Exception wie folgt:

throw new Exception('Unhandled payment state', $payment->getState());

Der Status des Payment Objektes ist vom Typ String und nicht vom Typ long, weshalb vor der Exception eine andere Exception "Wrong Parameters for Exception" geschmissen wird.

Gemäß "Upgrading to PHP 7, Davey, Shafik, 2016, O'Reilly" (echt gute Lektüre! Sehr empfehlenswert und gratis bei O'Reilly erhältlich) wird auf Seite 37 ff. beschrieben, dass alle internen Klassen (also auch die Exception Klasse) nun eine Exception schmeissen, wenn der Constructor fehlschlägt: Auch bei nicht übereinstimmenden Typen (string != long). Auf Seite 42 wird dies noch etwas vertieft. Auf Seite 42 findet sich dann der Hinweis, dass Standard PHP fatal errors (welcher der o.g. Fehler ist) nun als Exception geschmissen werden und auf Seite 43 dann der Hinweis, dass diese nicht mehr über den set_error_handler() abgefangen werden können.

Lange Rede kurzer Sinn: Vor PHP 7 wurde die Exception in Zeile 569 des o.g. Codes auch schon falsch aufgerufen und der Fehler string != long existierte damit in PHP < 7.0 auch schon. Allerdings führte dies bei PHP < 7.0 nur dazu, dass der Fehler durch den jtlErrorHandler (Zeile 40 htdocs/includes/error_handler.php) geschluckt wurde und nur in den Logdateien zu sehen war. Das Plugin läuft dadurch an einer Stelle weiter, wo die Entwickler es aber durch den Aufruf der Exception beenden wollten.

Somit ist der hier diskutierte "Fehler" kein PHP 7.1 Fehler, sondern ein PHP >= 7 Fehler, bzw. ein PHP < 7 Fehler - Ab PHP 7 wird ja eine Exception geschmissen, nur nicht die, die die Entwickler eigentlich vorhatten zu schmeissen ;).

Lösung des Problems: Korrektur der Zeile 569 in der Datei htdocs/includes/plugins/jtl_paypal/version/106/paymentmethod/class/PayPalPlus.class.php auf

throw new Exception('Unhandled payment state', 4711);

oder ähnliches. Der Parameter 2 des Constructors der Exception Klasse spiegelt nämlich nur einen durch den Entwickler definierbaren Fehlercode wieder, der zusammen mit der Exception-Message für den Entwickler eine schnelle Identifikation der Exception bieten soll. Der Status des Payment-Objektes ist der Exception-Klasse egal! Wenn dem Entwickler der Status wichtig ist, dann wäre so etwas denkbar:

throw new Exception('Unhandled payment state: '.$payment->getState(), 4711);

@JTL: Bitte prüft einmal, ob ihr diesen Fehler auch noch irgendwo anders eingebaut habt. Exceptions werden so selten geworfen, dass diese Fehler fast gar nicht auffallen.

Natürlich ändert das nichts an der Tatsache, dass ihr "created" als Status erwartet und "approved" erhaltet. Aber, wenn Ihr doch wisst, dass Paypal etwas an der Rückgabe verändert habt und "approved" für Euch auch OK ist, dann baut doch als Hoffix 2 in der Zeile davor einfach ein:

if ($payment->getState() != 'created' && $payment->getState() != 'approved') {

Ich hoffe, ich konnte irgendwie helfen und die Kuh ist bald vom Eis ;)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: css-umsetzung

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
316
Düsseldorf
Überschaubar schon, aber ein Verhalten hat sich geändert, was dort höchstens in den Kommentaren angerissen wird:

https://forum.jtl-software.de/threads/amazon-payments-lpa-fuer-jtl-shop4.82264/page-8#post-584914

Wenn eine Variable nicht als Array initialisiert wurde, dann aber später als Array-Variable verwendet wird, "knallt" es ab 7.1

Wobei die v1.06 PayPal Basic läuft hier bislang fehlerfrei unter 7.1.
 

zttom

Offizieller JTL-Partner
ZTBanner
13. Februar 2018
12
15
Overath
@Xantiva: Deine Aussage kann ich so nicht bestätigen. Das was Du meinst ist: "Ein String kann später nicht als Array" genutzt werden. Das ist richtig, ist aber sowieso schlechte Programmierung, wenn man es vorher so gemacht hat - nur weil es vorher funktionierte heisst es nicht, dass es gut war. Das hat aber nichts mit dem Fehler von bbfdesign zu tun.

Der von bbfdesign diskutierte Fehler liegt im Aufruf des Constructors der Excpetion. Der Constructor der Exception wird in der PaypalPlus Klasse bis einschliesslich v1.07 falsch aufgerufen, wenn das Zahlungsobjekt an dieser Stelle einen Status != 'created' hat. Siehe auch https://issues.jtl-software.de/issues/SHOP-2137 . Der Fehler ist erst in der v108 behoben.

Der Fehler führt mit PHP < 7 dazu, dass an der Stelle wo JTL eine Exception schmeissen möchte (also wenn der status != created ist), nie eine Exception geschmissen wird. Ich prüfe noch, ob damit durch einen Abbruch bei Paypal Plus, die Paywall umgangen werden konnte, was natürlich übel wäre.

Weitere Ergänzungen mache ich jetzt nur noch im Issue-Tracker.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: bbfdesign

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
316
Düsseldorf
Vielleicht eine blöde Frage, aber wie aktualisiere ich Shop-Plugins (konkret das PayPal-Plugin)? Ich finde in der gesamten Doku / Guide keinen Hinweis auf ein Update, sondern immer nur auf die Installation.

z.B.: https://guide.jtl-software.de/Plugins_für_JTL-Shop_verwalten

Reicht es, ein bestehendes Modul vor dem Update zu deaktiveren, oder muss ich es deinstallieren (was wäre dann mit der Konfiguration)? Oder brauch ich überhaupt nur die neuen Daten hoch zu laden?

Danke!
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
316
Düsseldorf
Ok, ich habe jetzt einfach mal die neue .zip Datei hochgeladen. Das reicht scheinbar aus, mir wird in der Pluginverwaltung angezeigt, dass ein Update vorliegt.

Aber trotzdem wäre es schön, wenn das im Guide wenigstens mal erwähnt wird.
 
  • Gefällt mir
Reaktionen: mhilbig und maahn

Performwerk

Aktives Mitglied
21. März 2017
69
7
Ich habe ebenso die Datei hochgeladen und extrahiert. Hat auch soweit geklappt und wurde überschrieben. Im Backend in der Pluginverwaltung ist aber immer noch die alte Version. Was kann man diesbezüglich machen? Scheinbar aktualisiert es sich nicht von allein. Plugin komplett deinstallieren möchte ich ungern, da ich ja alle Daten wieder eingeben muss. Ich bin froh, dass es läuft. Gibt es eine andere Lösung? Dankeschön.
 

Performwerk

Aktives Mitglied
21. März 2017
69
7
Super. Ich hatte nicht die Upload-Funktion in der Pluginverwaltung verwendet, sondern direkt im File-Manager. Jetzt funktioniert es. Vielen Dank.
 

Performwerk

Aktives Mitglied
21. März 2017
69
7
Ich habe jetzt leider das nächste Problem. Die Zugangsdaten, die ich gestern noch bei der Ratenzahlung hinterlegen konnte, die sind jetzt weg. Also ich habe generell die Felder ab "Live/Sandbox" nicht mehr, wo alle Zugangsdaten eingetragen werden konnten. Bei Paypal-Plus sind diese noch vorhanden.
 

JulianG

Administrator
Mitarbeiter
14. November 2013
1.254
396
@dezain du hast vermutlich jetzt Ratenzahlung/Finance doppelt bei den Zahlungsarten. Einmal mit und einmal ohne die Möglichkeit Zugangsdaten zu hinterlegen.
Falls nicht muss das Plugin deinstalliert und neu installiert werden (das bedeutet alle Zugangsdaten+Einstellungen neu hinterlegen!). Um die doppelten Zahlungsarten zu entfernen müssen wir leider direkt in die Datenbank. Dafür bitte ein Ticket via Email an paypalplugin@jtl-software.de eröffnen.
 

Performwerk

Aktives Mitglied
21. März 2017
69
7
Ja, ich habe PayPal Finance und PayPal Ratenzahlung in der Zahlungsartenübersicht, bei beiden aber keine Möglichkeit Zugangsdaten zu hinterlegen. Also werde ich um eine Deinstallation nicht drum rum kommen?!
 

JulianG

Administrator
Mitarbeiter
14. November 2013
1.254
396
@dezain Wenn beide die Felder nicht mehr haben kommst du leider definitiv nicht um Deinstallation+Neuinstallation herum. Danach wirst du vermutlich dann sogar 3x Ratenzahlung haben. Die beste vorgehensweise wäre: Deinstallieren, dann bereinigen wir die Zahlungsart-Leichen und dann installierst du neu. Per Ticket können wir das zeitlich vernünftig abstimmen.
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
462
Emsland
Firma
Notun Delend
Ist in der neuen Version auch das Problem angegangen worden, dass Kunden, die per Paypal Express zahlen, stets mit Anrede "Herr" in der Wawi landen, auch wenn es sich um Damen handelt?
Wie ist denn der Stand der Dinge hier? Gibt es ein Workaround? ...oder gar eine Lösung?
Manche Kunden sind pikiert oder gar beleidigt und ich kann mir nicht vorstellen, dass JTL zusammen mit paypal da seit Jahren keine Lösung findet. :(
 

hula1499

Sehr aktives Mitglied
22. Juni 2011
5.285
1.222
Hm, wir haben das Problem nicht.

Anrede ist komplett raus bei uns (Anrede aus) auch kein optionales Feld, somit kommt - bei uns - auch keine Anrede in die WaWi.

Behebt den Bug jetzt natürlich nicht, ist aber zumind. ein Workaround, wenn jemand auch genrell keinen Wert auf Anrede legt (wie ich).
 

hula1499

Sehr aktives Mitglied
22. Juni 2011
5.285
1.222
Don´t shot the messenger....

Du wirst hier auch nix mehr anderes von JTL erwarten können, schau dir mal die ganzen offenen Bugs von PP/PPE an.
Shop 5 kommt ja bald, dann gibts nen neuen issue im tracker :D
 
  • Gefällt mir
Reaktionen: _simone_

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.340
2.001
Berlin
Hm, wir haben das Problem nicht.

Anrede ist komplett raus bei uns (Anrede aus) auch kein optionales Feld, somit kommt - bei uns - auch keine Anrede in die WaWi.

Behebt den Bug jetzt natürlich nicht, ist aber zumind. ein Workaround, wenn jemand auch genrell keinen Wert auf Anrede legt (wie ich).

Hab das gerade bei einem Kunden in den Templates umgebaut, dass die Anrede vom Kunden überall optional ausgefüllt werden kann, leider mussten hierfür auch alle Email Vorlagen angepasst werden, da dort nur zwei Zustände existieren, Männlich oder Weiblich, in den Vorlagen der wawi ist das besser geregelt.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Paypal Plugin wird von akutellen IOS Geräten nicht geladen Plugins für JTL-Shop 17
Neu Warnung bei Paypal Plugin Plugins für JTL-Shop 4
Neu Zahlung Kreditkarte nicht möglich (Paypal Plugin) JTL-Shop - Fehler und Bugs 5
Neu Probleme mit PayPal-Plugin: Bestellungen "pending" & doppelte Zahlungen nach Direktzahlung Plugins für JTL-Shop 0
Neu Dringende Hilfe Paypal Checkout Plugins für JTL-Shop 0
Kunden aufträge werden nicht übernommen Paypal JTL-Wawi 1.9 0
Neu Skonto-Abzug trotz PayPal-Zahlung – Wie können wir das verhindern? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Zahlungsarten werden nicht angezeigt... Secupay, Paypal Checkout und Shop-Zahlungsarten gleichzeitig möglich? Plugins für JTL-Shop 0
Neu PayPal Checkout -> Der Zahlungsanbieter hat eine erneute Bestätigung der Kaufsumme angefordert Plugins für JTL-Shop 0
Neu 1.9.6.5 Zahlungsmodul Paypal Verwendungszweck wird nicht angezeigt. JTL-Wawi - Fehler und Bugs 5
1.9.6.5 Paypal Zahlungsabgleich Warnung T1501 und T0400 JTL-Wawi 1.9 1
Neu Probleme mit paypal / ZAhlung als nicht autorisiert zurückgewiesen JTL-Shop - Fehler und Bugs 6
Neu PayPal Anbindung Zahlungsmodul 1.9.6.5 User helfen Usern - Fragen zu JTL-Wawi 7
Neu [Entwarnung] ACHTUNG: JTL Shop 5.3.3 | Nach Update des JTL PayPal Commerce Plugins kein Backend mehr verfügbar (FATAL ERROR) Installation / Updates von JTL-Shop 2
paypal zahlunbgsabgleich bringt fehler JTL-Wawi 1.9 0
Nach Umstieg auf V5 Paypal express weg. Einrichtung JTL-Shop5 5
Neu Erstattungen per Paypal bei Stornierungen wird öfter nicht ausgezahlt Arbeitsabläufe in JTL-Wawi 0
Neu Neueste Version Paypal Checkout: Rechnungskauf mit Ratepay und Paypal-Kreditkarte sind nicht verfügbar. Plugins für JTL-Shop 21
Paypal Alternativen JTL-Wawi 1.9 4
HILFEEE!!!! Paypal Problem JTL-Wawi 1.9 12
Neu 💙 Neues Plugin: Ähnliche Artikel als Liste (Ähnliche Artikel vergleichen) Plugins für JTL-Shop 0
Neu JTL GPSR Plugin, Herstellerdaten im Tab anzeigen lassen? Allgemeine Fragen zu JTL-Shop 1
Neu Selber Plugin erstellen Plugins für JTL-Shop 3
Neu GPRS Plugin Infos doppelt und in Artikelliste Plugins für JTL-Shop 2
Neu Plugin-Manager Error 500 Technische Fragen zu Plugins und Templates 2
Neu Lizenkosten Shopware 6 Plugin ? Shopware-Connector 7
Neu Worüber Klarna am besten nutzen? Mollie oder Plugin? User helfen Usern - Fragen zu JTL-Wawi 1
Voucher Guthaben Payment Plugin Berechnen Allgemeine Fragen zu JTL-Vouchers 0
Neu Plugin für Bundles gesucht Plugins für JTL-Shop 4
Neu GPSR Plugin wird nicht bei allen Artikeln angezeigt Plugins für JTL-Shop 18
Neu GPSR Plugin Formatierung anpassen. Plugins für JTL-Shop 8
Neu GPSR Plugin Installation haut nicht hin Plugins für JTL-Shop 2
Neu 📢 Plugin "Verbotene Artikel: Kauf nur für richtige Kundengruppe" by NETZdinge.de Plugins für JTL-Shop 1
Neu GPSR Plugin Format Fehler Plugins für JTL-Shop 0
Neu Payment plugin order number Plugins für JTL-Shop 0
Plugin: JTL Exportformat Google Shopping - Mindermengenzuschlag Einrichtung JTL-Shop5 0
Neu Nach Update auf JTL GPSR-Plugin 1.0.3 vom Backend ausgeschlossen Plugins für JTL-Shop 25
Beantwortet Plugin Dev: Setting-Links Spacer Problem (info.xml) JTL-Shop - Fehler und Bugs 1
Neu Klarna Plugin mit JTL Shop 5.4.0 lässt Pay Now nicht zu Plugins für JTL-Shop 17
Neu WARNUNG JTL GPSR Plugin 1.0.2 funktioniert nicht, wenn Artikel keine Beschreibung hat Plugins für JTL-Shop 20
Neu Neues Datatrans-Plugin als Alternative zu CustomWeb/Sellxed – inkl. Twint, PostFinance und PowerPay 🚀 Plugins für JTL-Shop 0
Neu GPSR mit JTL Wawi + Plugin JTL-Wawi - Fehler und Bugs 5
Neu KI-Plugin für JTL-Shop - Eure Meinung ist gefragt! 🚀 🤖 Plugins für JTL-Shop 0
Neu GPSR-Plugin ignoriert Hersteller-Firmenangabe JTL-Shop - Fehler und Bugs 5
Welche GPSR Plugin-Einstellungen mit WaWi 1.9.6.1 JTL-Wawi 1.9 8
Neu Felder vom neuen Plugin importieren möglich? Shopware-Connector 0
Neu GPSR Plugin für Gambio Connector steht bereit Gambio-Connector 0
Neu DRINGEND Hilfe - Google Analytics Plugin JTL-Shop - Fehler und Bugs 4
Neu PlugIn: JTL GPSR Plugins für JTL-Shop 32
Neu Plugin Suche: Mailchimp Plugins für JTL-Shop 0

Ähnliche Themen