Sur une installation propre et vanillée de Magento 1.9.2.4, corrigée avec SUPEE-8788, SUPEE-9652 et SUPEE-9767, et avec le nouveau paramètre `` Activer la validation des clés de formulaire lors du paiement '' activé, après une vérification de l'enregistrement du nouveau client réussie sur la valeur par défaut One Page Checkout, aucun nouveau client n'est créé et le client n'est pas connecté, bien que la commande se déroule correctement.
Désactiver le paramètre «Activer la validation des clés de formulaire lors du paiement» rend ce travail à nouveau. Est-ce que quelqu'un d'autre a eu ce problème? Peu importe les méthodes d'expédition / de paiement utilisées.
J'ai depuis essayé cela avec une nouvelle installation inchangée de Magento 1.9.3.3 et il semble avoir le même problème. Lors de l'enregistrement d'un nouveau client via la validation d'une page, aucun client n'est créé même si la commande est très bien, tant que le paramètre `` Activer la validation des clés de formulaire lors de la validation '' est activé.
la source
Lorsque vous sélectionnez S'inscrire et continuer, le script JS appelle
checkout.setMethod()
, qui se trouve dansskin/frontend/base/default/js/opcheckout.js
. De là, nous pouvons voir qu'il fait une requête AJAX POSTthis.saveMethodUrl
, mais le seul paramètre qu'il passe estmethod
. Si nous regardonsMage_Checkout_OnepageController::saveMethodAction
, qui est la cible de cette demande AJAX, nous pouvons voir que le patch a ajouté:Etant donné qu'il
_validateFormKey
recherche unform_key
paramètre dans la demande et que lasetMethod
demande JS ne l'a pas envoyé lors de la demande AJAX, il revient simplement tôt et ne fait rien. Revenons à lasetMethod
fonction et nous pouvons voir que puisqu'elle ne tente rien de faire avec une valeur de retour, rien d'autre ne se passe et le JS continue. À ce stade, le JS a été défini,this.method = 'register'
mais le devis n'a pas été mis à jour, toutcheckout_method
comme l'invité par défaut.Étant donné que le JS connaît le registre sélectionné par le client, il affiche les champs de mot de passe, donc à première vue, il semble que vous vous inscrivez. Mais en ce qui concerne le côté PHP, il s'agit d'un paiement invité, donc il ne crée pas le client lorsque le paiement est terminé.
Edit: la solution la plus simple consiste à commenter ces trois lignes de saveMethodAction. La solution la plus correcte / complexe consiste
setMethod
à saisir la clé form_key de la page et à l'envoyer avec la demande AJAX.la source
app/code/core/Mage/Checkout/controllers/OnepageController.php
. Cela est dû au fait que le JS a effectué la demande et n'a pas envoyé la clé form_key. C'est un bug avec le patch. Je soupçonne qu'il devra y avoir une v2.Les crédits complets vont à Peter pour la solution! Je voudrais souligner les instructions étape par étape à modifier.
Allez dans app / code / core / Mage / Checkout / controllers / OnepageController.php
Localiser:
Mettez la ligne en commentaire avec / * * / tags.
la source
form key
place. Nous devons signaler cette erreur (correctif) à l'équipe principale de magento.isFormkeyValidationOnCheckoutEnabled()
vous pouvez simplement désactiver le paramètre dans l'administrateur, mais la meilleure solution est Raphaels: magento.stackexchange.com/a/177125/2671Un bon point de départ:
Patch de sécurité SUPEE-9767 - Problèmes possibles?
Vous devez mettre à jour vos fichiers de modèle. Veuillez noter qu'il ne reste que quelques heures à compter de la sortie de ce patch et pour le moment nous devons faire face à ce qui est public. Je suis à peu près sûr que dans les prochains jours, les choses seront clarifiées.
EDIT: Merci pour votre vote négatif! Je suis désolé, je ne peux pas donner de solution dans les 8 heures suivant la sortie de ce patch.
la source
Merci pour le patch @ Raphael chez Digital Pianism.
Pour plus de commodité, j'ai créé un diff afin que vous puissiez appliquer rapidement le patch.
la source
La version 2 du correctif SUPEE-9767 a été publiée plus tôt dans la journée , avec Magento CE 1.9.3.4 . V2 corrige un certain nombre de problèmes, y compris ce bogue d'enregistrement de paiement.
Vous pouvez mettre à niveau vers la dernière version (1.9.3.4), ou rétablir la V1, puis appliquer la V2 du correctif. L'une ou l'autre option résoudra le problème.
Le changement officiel dans V2 est effectivement le même que celui décrit par Peter O'Callaghan, en supprimant les trois lignes ajoutées
Mage_Checkout_OnepageController::saveMethodAction
.la source