Na semana passada, eu estava trabalhando com Magento e tentando configurar diferentes visualizações de loja. Basicamente, o cliente precisa configurar uma visualização de loja individual para cada país com uma URL base diferente. Por exemplo, se a URL base da sua loja principal é www.domain.com, e você tem uma visualização de loja para os EUA, sua URL base seria www.domain.com/us/.

Tudo estava indo bem, mas encontrei um problema com o processo de checkout. Se você acessar a loja dos EUA, adicionar alguns produtos ao carrinho e tentar finalizar a compra, pode encontrar um problema onde a página redireciona de volta para a página do carrinho de compras, seja antes ou depois de inserir as informações de cobrança. Se você tentar finalizar a compra novamente, o mesmo processo se repetirá. Na verdade, o Magento envia a solicitação de informações de cobrança para o servidor usando Ajax, e às vezes você não consegue ver o erro. No entanto, você pode ver o erro no seu arquivo de log de exceção ou log do sistema. Infelizmente, enquanto eu testava o problema, não consegui ver nenhuma mensagem de erro no log de exceção ou no log do sistema, então fiz algumas depurações através da função Ajax do Prototype, que se comunica com o servidor para solicitações de informações de cobrança.

abra opcheckout.js e encontre o código abaixo:

var request = new Ajax.Request(

this.saveUrl,

{

método: 'post',

onComplete: this.onComplete,

onSuccess: this.onSave,

onFailure: checkout.ajaxFailure.bind(checkout),

parâmetros: Form.serialize(this.form)

}

);

e faça as seguintes alterações, para que este alerta a mensagem de falha

var request = new Ajax.Request(

this.saveUrl,

{

método: 'post',

onComplete: this.onComplete,

onSuccess: this.onSave,

onFailure: function(transport){alert(transport.responseText)},

parâmetros: Form.serialize(this.form)

}

);

Então, se houver algum erro, você verá uma mensagem de alerta: “Não foi possível carregar o arquivo csv de preços do Royal Mail para ‘$file’. Certifique-se de que o diretório app/ está no seu caminho de inclusão.”

Na verdade, o problema que encontrei (no meu caso, pode ser algo diferente para você) é que a extensão Meanbee Royal Mail armazena o preço de envio em um arquivo CSV dentro da pasta app/code/community/Meanbee/Royalmail/data. Quando tentamos finalizar a compra a partir de uma visualização de loja diferente, e talvez a URL base seja diferente (aqui era algo como www.domain.com/us/), a função Meanbee _loadCsv($file) na classe Abstract.php sempre procura o arquivo dentro da pasta da URL base. Assim, ela encontrará um erro de solicitação de caminho de arquivo inválido. Se você fizer as seguintes alterações na função _loadCsv, poderá corrigir esse erro.

$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;

//substitua a linha acima por

$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;

//ele sempre olhará a partir do diretório base

Não posso garantir que isso funcionará 100% perfeito para você, no entanto, isso resolveu meu problema.