La semaine dernière, je travaillais avec Magento et j'essayais de configurer différentes vues de magasin. En gros, le client a besoin de configurer une vue de magasin individuelle pour chaque pays avec une URL de base différente. Par exemple, si l'URL de base de votre magasin principal est www.domain.com, et que vous avez une vue de magasin pour les États-Unis, son URL de base serait www.domain.com/us/.
Tout allait bien, mais j'ai rencontré un problème avec le processus de paiement. Si vous allez dans la boutique américaine, ajoutez des produits au panier, puis essayez de passer à la caisse, vous pourriez rencontrer un problème où la page redirige vers la page du panier, soit avant, soit après avoir saisi les informations de facturation. Si vous essayez de passer à la caisse à nouveau, le même processus se répétera. En fait, Magento envoie la demande d'informations de facturation au serveur en utilisant Ajax, et parfois vous ne pouvez pas voir l'erreur. Cependant, vous pouvez voir l'erreur dans votre fichier de journal d'exceptions ou le journal système. Malheureusement, pendant que je testais le problème, je n'ai pu voir aucun message d'erreur dans le journal d'exceptions ou le journal système, donc j'ai fait un peu de débogage à travers la fonction Ajax de Prototype, qui communique avec le serveur pour les demandes d'informations de facturation.
ouvrez opcheckout.js et trouvez le code ci-dessous :
var request = new Ajax.Request(
this.saveUrl,
{
méthode : 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: checkout.ajaxFailure.bind(checkout),
paramètres : Form.serialize(this.form)
}
);
et apportez les modifications suivantes, afin que cette alerte soit le message d'échec
var request = new Ajax.Request(
this.saveUrl,
{
méthode : 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: function(transport){alert(transport.responseText)},
paramètres : Form.serialize(this.form)
}
);
Donc, s'il y a une erreur, vous verrez un message d'alerte : “Impossible de charger le fichier csv des prix de Royal Mail pour ‘$file’. Assurez-vous que le répertoire app/ est dans votre chemin d'inclusion.”
En fait, le problème que j'ai trouvé (dans mon cas, cela pourrait être autre chose pour vous) est que l'extension Meanbee Royal Mail stocke le prix d'expédition dans un fichier CSV à l'intérieur du dossier app/code/community/Meanbee/Royalmail/data. Lorsque nous essayons de passer à la caisse depuis une vue de magasin différente, et peut-être que l'URL de base est différente (ici, c'était quelque chose comme www.domain.com/us/), la fonction Meanbee _loadCsv($file) dans la classe Abstract.php cherche toujours le fichier à l'intérieur du dossier de l'URL de base. Ainsi, elle rencontrera une erreur de demande de chemin de fichier invalide. Si vous apportez les modifications suivantes dans la fonction _loadCsv, vous pouvez corriger cette erreur.
$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//remplacer la ligne ci-dessus par
$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//il regardera toujours depuis le répertoire de base
Je ne peux pas garantir que cela fonctionnera à 100 % pour vous, cependant cela a résolu mon problème.