Passer la Commande échoue dans Magento OnePage Checkout
J'ai une boutique Magento qui a été converti en un "au temps" type de magasin, et le processus de commande est cassé. J'ai essayé de débogage, mais a frappé un mur, principalement en raison de ma compréhension limitée de Magento.
Sur le saveOrder étape, en cliquant sur "passer la Commande", la page indique "envoi d'informations de commande, le message s'efface et le shopper est toujours sur la page de vérification de Commande.
Je l'ai analysé avec Firebug et HttpFox, et je peux voir les informations de commande est envoyé
(Request-Line) POST /checkout/onepage/saveOrder/ HTTP/1.1
Host www.domainname.com
User-Agent Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0
Accept text/javascript, text/html, application/xml, text/xml, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
X-Requested-With XMLHttpRequest
X-Prototype-Version 1.6.0.3
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Referer https://www.domainname.com/checkout/onepage/
Content-Length 178
Cookie frontend=cd60252d28cd115d4096cb2bb5b6a043
Pragma no-cache
Cache-Control no-cache
Publier des Données montre toutes les informations nécessaires:
payment[method] authorizenet
payment[cc_type] VI
payment[cc_number] 4111111111111111
payment[cc_exp_month] 5
payment[cc_exp_year] 2012
payment[cc_cid] 987
Mon problème semble similaire à ce post:
http://fishpig.co.uk/magento-tutorials/magento-checkout-error-undefined-javascript-alert
mais je ne suis pas un "Undefined" alerte, j'ai donc ajouté l'instruction "else" ci-dessous:
nextStep: function(transport){
if (transport && transport.responseText) {
alert(transport.responseText);
try{
response = eval('(' + transport.responseText + ')');
}
catch (e) {
response = {};
}
if (response.redirect) {
location.href = response.redirect;
return;
}
if (response.success) {
this.isSuccess = true;
window.location=this.successUrl;
}
else{
var msg = response.error_messages;
if (typeof(msg)=='object') {
msg = msg.join("\n");
}
alert(msg);
}
if (response.update_section) {
$('checkout-'+response.update_section.name+'-load').update(response.update_section.html);
response.update_section.html.evalScripts();
}
if (response.goto_section) {
checkout.gotoSection(response.goto_section);
checkout.reloadProgressBlock();
}
} else {
alert('transport.responseText');
}
},
Je suis la JS alerte sans texte, de sorte qu'il ressemble de transport.reponseText est vide. Les principales références à vide texte de la réponse que j'ai trouvé semble être liée à l'origine de la politique, je ne pense pas que s'applique, parce que mon AJAX post et de www.domainname.com.
Quand je l'appelle la saveOrder fonction directement dans le navigateur, je reçois une réponse valide:
https://www.domainname.com/checkout/onepage/saveOrder
{"succès":false,"erreur":true,"error_messages":"numéro de carte de Crédit incompatibilité avec la carte de crédit de type"}
et HTTPFox montre que je suis un 200 de réponse de l'appel Ajax, mais le responsetext est tout simplement vide. Je trouve pas de PHP erreurs ou des erreurs dans Magento exceptions journal. La seule chose que je suis la recherche qui pourrait être liée à "Headers already sent" dans Magento journal système:
</pre>
2011-09-03T12:14:21+00:00 DEBUG (7): HEADERS ALREADY SENT: <pre>[0] wwwroot/app/code/core/Mage/Core/Controller/Response/Http.php:50
[1] wwwroot/lib/Zend/Controller/Response/Abstract.php:726
[2] wwwroot/app/code/core/Mage/Core/Controller/Response/Http.php:82
[3] wwwroot/app/code/core/Mage/Core/Controller/Varien/Front.php:169
[4] wwwroot/app/Mage.php:459
[5] wwwroot/index.php:67
</pre>
Quelqu'un aurait-il des suggestions pour quelle autre raison le responseText est de retour à vide?
J'ai été en utilisant Mage::log, mais d'autres développeurs ont travaillé sur ce processus, donc je vais vérifier pour toutes les instructions d'impression.
Attendre, à part le problème avec certains contenus envoyés avant les en-têtes, qu'attendez-vous qui se passerait si "numéro de carte de Crédit incompatibilité avec la carte de crédit de type"?
J'ai débogué un substituée à la caisse avant et remarqué que chaque fois que le one page checkout ne parvient pas à passer à l'étape suivante dans le processus, il est généralement quelque chose dans la coutume de code de module. Alors vous pouvez regarder dans le code de tous les modules dans votre système, notamment en substitution de la procédure de paiement.
David, qui était le problème. J'avais écarté cette possibilité à l'origine, parce que j'ai pensé à désactiver tous les modules personnalisés dans l'interface d'admin fait handicapés eux, plutôt que de "désactivation de leur sortie". Quoi que cela signifie. Une fois que je me rends compte que j'ai mis <>False</Actif> dans la configuration du module et de la caisse travaillé. J'ai été en mesure de résoudre le module personnalisé questions, donc je suis à la clôture de cette question. Merci pour les commentaires.
OriginalL'auteur Canuteson | 2011-09-03
Vous devez vous connecter pour publier un commentaire.
Modules personnalisés faute. Désactiver tous les modules personnalisés dans l'interface d'admin n'a pas fait de désactiver eux, il ne "désactive leur sortie".
Paramètre False dans la configuration du module résolu le non valide en-têtes d'erreur, à quel point j'étais en mesure de déboguer le module personnalisé problème qui causait l'AJAX caisse des erreurs.
OriginalL'auteur