Probleme mit in context Modus Paypal Plugin & iPhones

Hallo,

wir haben vermehrt Probleme mit einem fehlenden Paypal-Kaufen Button auf der confirm Seite und dem Safari-Browser.

Das Ausblenden des Standard-Buttons kann man oft noch sehen, aber es wird dann kein iframe von Paypal geladen. Es kann also gar nicht mehr gekauft werden.

Wir haben dieses Problem bei einer Mitarbeiterin, die öfters ihr iPhone benutzt, um Bestellungen aufzugeben.

Manchmal hilft ein Reload der Seite oder der Wechsel der Zahlungsarten, oft das Leeren des Browsercaches. In der Regel sind Browser-Tabs mit ausgelaufenen Sessions des Shops zusätzlich offen.

Auch von Shopkunden ist dies schon berichtet worden.

Ein typische Ablauf bei dem Auftreten dieses Problems ist:

  1. CSRF-Token Fehler nach Auswahl der Zahlungsart
  2. Tritt manchmal mehrfach auf, aber man kommt irgendwann auf die confirm Seite
  3. Auf der confirm-Seite fehlt der Paypal-Kaufen Button
  4. Wechsel der Zahlart bewirkt nicht immer ein Neuladen der confirm-Seite, sondern es wird einfach die Seite mit ausgeblendetem „Standard-Kaufen-Button“ angezeigt.

Könnt ihr - @Michael_Telgmann , @d.garding - wieder eine Plugin-Version ohne in-context Modus anbieten? Dann wäre zumindest ein Button auf der Seite.

Hallo,

ich denke, das wird nicht ohne weiteres möglich sein. Wir haben damals den In-Context ausgebaut, um die Komplexität des Codes zu vermindern.

Das sieht mir sehr nach einem Fehler im Safari-Browser aus. Kannst du mir sagen, mit welchen iOS Versionen das Problem auftritt? Dann kann ich mir das in Browserstack einmal ansehen.

Vllt. finde ich einen Fix dafür.

LG

Dennis Garding

Hallo Dennis,

vielen Dank für die schnelle Reaktion

iOS 17.1.1

ich schick dir meine Kontaktdaten per PM, falls du Fragen/Wünsche hast.

Ich hänge mich hier mal mit dran, da wir dieses Problem auch haben.

Die Kunden sind alle auf 17.1.1 unterwegs gewesen und haben es mit mehreren unterschiedlichen Endgeräten probiert.

Das letzte Update gemacht bei Paypal? Ist auch schon ein anderer Thread offen.

Hallo @d.garding ,

du kannst das Verhalten auf Browserstack nachstellen, indem du in Zeile 82 vor dem Setzen der CSS-Klasse das Debugging unterbrichst und mit dem Back-Button eine Seite im Checkout zurückgehst. Sowohl bei Verwendung des Shopware „Weiter“-Butttons als auch mit des Forward Buttons von Safari fehlt dann der Paypalbutton, weil success nicht mehr ausgeführt wird und die Klasse paypalScriptLoadedSelector nicht vorhanden ist.

SwagPaymentPayPalUnified/Resources/views/frontend/_public/src/js
/jquery.swag-paypal-unified.in-context-checkout.js

1 „Gefällt mir“

Hallo hth,

danke für die Info, ich bin gerade im Urlaub, ich werde es aber sofort nach Silvester testen. Es ist immer gut, wenn man einen solchen Hinweis bekommt! Ich hatte das bereits getestet, aber konnte in Browserstack so nicht nachstellen. Die neuen Infos werde ich auf jeden Fall überprüfen!!

Moin,

ich habe mir das gerade mal angesehen. Also wenn ich vor Zeile 82 ein „return;“ mache, wird der Button auch nicht gerendert. Dann wird er nirgendwo angezeigt, weil er nicht gerendert wird. :confused:

Das hilft mir leider nicht weiter.

Meine Beschreibung bezog sich darauf, die Situation eines nicht gerenderten Buttons auf Browserstack zu reproduzieren. Alle aktuelleren (Nov-Dez 23) Threads zu diesem Thema und die Phänomenologie bei den „echten“ iPhone Nutzern mit denen ich Kontakt hatte, weisen darauf hin, dass es ein Caching Problem ist, wodurch der Button nicht gerendert wird.

Und mit deinem Return hast du dieses ebenfalls nachgestellt oder ich habe dich jetzt vollkommen falsch verstanden.

Immer wenn es zu folgender Situation kommt, wird der Button nicht gerendert. Und das entspricht doch auch dem verwendeten JS-Source Code im Plugin:

  1. keine CSS-Klasse vorhanden
  2. Paypal SDk wird nicht nachgeladen, sondern kommt aus dem Browsercache (memory im Network Panel).

In dieser Kombination überspringt Safari komplett $.ajax({…}) ab Zeile 72 ohne die success function aufzurufen. Innerhalb von success würder aber der Button erst gerendert. So etwas ist bei Safari schon seit Ewigkeiten immer wieder ein Problem.

Das Problem könnte man beheben, indem du die nicht die CSS-Klasse als Kriterium in der if Anweisung, sondern das Paypal Object verwendest. Ich habe eine weniger „invasive“ Variante bei meinen Kunden eingesetzt und eine etwas gekürzte Version bei dem issue im neuen Github Repo hinterlegt. Anschließend gab es im Blackweek/Weihnachtsgeschäft keine Beschwerden mehr über fehlende Paypal-Buttons, vorher einige.

Eine Voraussetzung scheint zu sein, dass die Kunden sich Ware in den Warenkorb legen, anmelden, aber die Bestellung nicht abschließene. Nach einer Weile kommen die dann wieder und erst dann entstehen solche Probleme.

Unter diesen Konstellationen kann es auch zu der CSRF-Fehler Dauerschleife im Checkout kommen. Ich bin auf Browserstack leider nur 1 Mal dort hineingeraten und kann es nicht reproduzieren. Im Sourcecode für das CSRF-Plugin gibt es meiner Ansicht nach 2 Stellen, die ebenfalls ein Cachingproblem darstellen könnten.

Hallo,

wir haben gerade eine neue Version released, die dieses Problem behebt

Hallo,

wir erhalten seit ca. 1-2 Monaten immer wieder Anrufe, dass es bei der Bezahlung (meistens per PayPal) mit Apple Geräten und Safari Browser Probleme gibt. Die Kunden reden da von einem Invalid Token Fehler der auf der Zahlungsseite erscheint. Mit einem anderen Gerät oder Browser funktioniert es dann einwandfrei.

Wir benutzen Shopware 5.7.13. Das PayPal Plugin ist aktuell, Version 6.1.5

Kann uns da vielleicht jemand weiterhelfen ?

beste Grüße
K-H

Hallo @Pfeifhofer_K-H ,

ich nehme an, du beziehst dich mit dem „Invaliden Token“ auf die Fehlermeldung bei einem falschen CSRF-Token. Ich kann dir dafür leider keinen endgültigen Patch liefern, habe das Verhalten aber bei der Suche nach dem Paypal-Button Problem gesehen.

Wir hatten die Fehlermeldung in den betroffenen Shops durch einen verständlicheren Text ersetzt. Meist reicht ein Reload der Seite, um fortfahren zu können. Darauf muss man die Leute einfach nur klarer hinweisen und einen richtigen Button dafür integrieren. Anschließend sind die „Beschwerden“ darüber zahlenmäßig zurückgegangen. Komplett beseitigt ist Problem dann allerdings noch nicht. Ich vermute, die Ursache ist ähnlich wie beim Paypal-Button.

Das ist die Template-Datei: frontend/error/csrf.tpl