Bei einer sauberen Vanilla-Installation von Magento 1.9.2.4, gepatcht mit SUPEE-8788, SUPEE-9652 und SUPEE-9767, und mit der neuen Einstellung 'Formularschlüsselüberprüfung beim Auschecken aktivieren', nachdem eine erfolgreiche Neukundenregistrierung beim Auschecken aktiviert wurde In der Standardeinstellung für One Page Checkout wird kein neuer Kunde erstellt und der Kunde ist nicht angemeldet, obwohl die Bestellung ordnungsgemäß ausgeführt wird.
Wenn Sie das Kontrollkästchen "Formularschlüsselüberprüfung beim Auschecken aktivieren" deaktivieren, funktioniert dies wieder. Hat jemand anderes dieses Problem gehabt? Es scheint keine Rolle zu spielen, welche Versand- / Zahlungsmethoden verwendet werden.
Ich habe dies seitdem mit einer neuen, unveränderten Installation von Magento 1.9.3.3 versucht und es scheint dasselbe Problem zu geben. Wenn Sie einen neuen Kunden über die einseitige Kaufabwicklung registrieren, wird kein Kunde erstellt, auch wenn die Bestellung erfolgreich abgeschlossen wurde, sofern die Einstellung "Bestätigung des Formularschlüssels bei Kaufabwicklung aktivieren" aktiviert ist.
quelle
Wenn Sie registrieren auswählen und fortfahren, ruft das JS-Skript auf
checkout.setMethod()
, das sich in befindetskin/frontend/base/default/js/opcheckout.js
. Von dort aus können wir sehen, dass es eine AJAX POST-Anfragethis.saveMethodUrl
anstellt, aber der einzige Parameter, den es übergibt, istmethod
. Wenn wir uns ansehenMage_Checkout_OnepageController::saveMethodAction
, welches das Ziel dieser AJAX-Anfrage ist, können wir sehen, dass der Patch hinzugefügt wurde:Da in der Anforderung
_validateFormKey
nach einemform_key
Parameter gesucht wird und die JS-setMethod
Anforderung diesen bei der Erstellung der AJAX-Anforderung nicht gesendet hat, kehrt sie einfach vorzeitig zurück und unternimmt nichts. Zurück zu dersetMethod
Funktion, und wir können sehen, dass nichts anderes passiert und die JS fortfährt, da sie nicht versucht, etwas mit einem Rückgabewert zu tun. Zu diesem Zeitpunkt hat die JS festgelegt,this.method = 'register'
aber das Angebot wurde nicht aktualisiert, und diescheckout_method
ist der Standard-Gast.Da der JS das vom Kunden ausgewählte Register kennt, werden die Kennwortfelder angezeigt. Auf den ersten Blick sieht es also so aus, als würden Sie sich registrieren. Auf der PHP-Seite handelt es sich jedoch um eine Gast-Kaufabwicklung, sodass der Kunde nach Abschluss der Kaufabwicklung nicht mehr erstellt wird.
Bearbeiten: Die einfachste Lösung ist das Auskommentieren dieser drei Zeilen von saveMethodAction. Die korrektere / komplexere Lösung besteht darin,
setMethod
den form_key von der Seite zu holen und mit der AJAX-Anfrage zu senden.quelle
app/code/core/Mage/Checkout/controllers/OnepageController.php
. Dies wird dadurch verursacht, dass der JS die Anforderung erstellt, den form_key nicht zu senden. Es ist ein Fehler mit dem Patch. Ich vermute, dass es eine v2 geben muss.Volle Credits gehen an Peter für die Lösung! Ich möchte Schritt für Schritt darauf hinweisen, was zu ändern ist.
Gehe zu app / code / core / Mage / Checkout / controller / OnepageController.php
Lokalisieren:
Kommentieren Sie die Zeile mit / * * / tags aus.
quelle
form key
stattdessen die Anfrage von js gesendet werden . Wir sollten diesen Fehler (Patch) dem Magento-Kernteam melden.isFormkeyValidationOnCheckoutEnabled()
Sie die Einstellung im Admin einfach deaktivieren. Die beste Lösung ist jedoch Raphaels: magento.stackexchange.com/a/177125/2671Ein guter Ausgangspunkt:
Sicherheitspatch SUPEE-9767 - Mögliche Probleme?
Sie müssen Ihre Vorlagendateien aktualisieren. Bitte beachte, dass es nur ein paar Stunden nach Veröffentlichung dieses Patches sind und wir uns im Moment mit dem befassen müssen, was öffentlich ist. Ich bin mir ziemlich sicher, dass die Dinge in den nächsten Tagen geklärt werden.
EDIT: Vielen Dank für die Abstimmung! Es tut mir leid, dass ich innerhalb von 8 Stunden nach Veröffentlichung dieses Patches keine Lösung geben kann.
quelle
Danke für den Patch @ Raphael bei Digital Pianism.
Der Einfachheit halber habe ich ein Diff erstellt, damit Sie den Patch schnell anwenden können.
quelle
Version 2 des SUPEE-9767-Patches wurde heute zusammen mit Magento CE 1.9.3.4 veröffentlicht . V2 behebt eine Reihe von Problemen, einschließlich dieses Fehlers bei der Checkout-Registrierung.
Sie können auf die neueste Version (1.9.3.4) aktualisieren oder V1 wiederherstellen und dann V2 des Patches anwenden. Beide Optionen lösen das Problem.
Die offizielle Änderung in V2 ist praktisch die gleiche wie die von Peter O'Callaghan beschriebene, wobei die drei hinzugefügten Zeilen entfernt werden
Mage_Checkout_OnepageController::saveMethodAction
.quelle