Magento 1.9.0.1 Erro no Paypal Os totais dos valores dos itens do carrinho não correspondem aos valores dos pedidos (# 10413:

9

é isso usando magento 1.9.0.1 integrou a caixa expres paypal, além disso você tem os pontos de recompensa do plugin pro como pontos de recompensa para comprar algum produto escolhido que quando se tornou a integração e compra de produtos sem usar pontos de recompesa, pagamento por paypal O nigun pode ser feito sem problemas, mas quando os clientes usam pontos de recompensa, um erro ao confirmar o pedido, que é

O gateway do PayPal rejeitou a solicitação. Os totais do item do carrinho Valores não correspondem à ordem (# 10413: Transação recusada por causa de um argumento inválido. Consulte as mensagens de erro adicionais para obter detalhes.)

Pesquisando na net para tentar corrigir esse erro, sugiro que você possa modificar o arquivo Nav.php paypal adicionando quaisquer dois códigos que coloquei abaixo:

primeiro código

// Iniciar Hack

$totalValue = $request['TAXAMT'] + $request['ITEMAMT'];
$finalValue = $totalValue - $request['AMT'];

if($request['SHIPPINGAMT'] > 0) {

$request['SHIPPINGAMT'] = ($request['AMT'] - ($request['TAXAMT'] + $request['ITEMAMT']));
$totalValue = $request['TAXAMT'] + $request['ITEMAMT'] + $request['SHIPPINGAMT'];
$finalValue = $totalValue - $request['AMT'];

}

if($request['AMT'] != $totalValue) {

if($totalValue > $request['AMT']) {
$request['TAXAMT'] = $request['TAXAMT'] - $finalValue;
}elseif($totalValue < $request['AMT']) {
$request['TAXAMT'] = $request['TAXAMT'] + $finalValue;
}else{
$request['AMT'] = $request['TAXAMT'] + $request['ITEMAMT'];
}
}

// Hack End

segundo código

    // Check discount
$lineAmt = 0;
$discount = 0;
$line = 0;
$discountIndex = 0;
while(isset($request["L_AMT{$line}"])) {
if($request["L_NAME{$line}"] == 'Discount') {
$discount += $request["L_AMT{$line}"];
$discountIndex = $line;
}
else {
$lineAmt += $request["L_AMT{$line}"];
}
$line++;
}

if($discount) {
if($discount + $lineAmt != $request['ITEMAMT']) {
// Do correction
$request["L_AMT{$discountIndex}"] = ($request['ITEMAMT'] - $lineAmt);
} 
} else {
// Check item amount adds up
$correctItemAmt = $request['AMT'] - $request['SHIPPINGAMT'] - $request['TAXAMT'];
if($correctItemAmt != $request['ITEMAMT']) {
$request['ITEMAMT'] = $correctItemAmt;
}

//fim

A adição de qualquer código, se permitido, e o pagamento pelos pontos de desconto, mas o problema é que, quando você vê o pagamento paypal, está cobrando o valor do desconto em vez do valor total, o tempo em que os clientes do paypal efetuam login e passam pelo expres box, todos os valores estão corretos e desglozadas no final o valor total do pagamento é bom, retorne à loja e confirme o pedido, que é feito com sucesso, mas quando o pagamento paypal no valor do desconto é o que recebemos, ele exemplifica deixe claro

Custo do produto> 340 Pontos usuados por cliente> 125 equivalentes a 20,54 Total de compras na loja e caixas com paypal expres> 319,46 Quantidade recibda para ver a conta no paypal> 20,54

Além disso, ao comprar pontos de recompensa não utilizados de pagamento, é feito um erro indicando que o valor da transação é válido porque é Zero.

Fiquei intrigado ao ver o que o erro codifica para modificá-lo, mas não posso fazê-lo, não se alguém souber que tenho que fazer ou puder ajudar

Uriel castillo
fonte
Onde o Nav.php está localizado?
Giuseppe
Seu problema foi resolvido ou não?
Gem

Respostas:

7

Problema

O problema é bastante claro na mensagem: o total de valores de itens e o valor total do carrinho enviado ao Paypal não correspondem.
Como você descobriu, isso parece ser um problema com a extensão de pontos (ou completa falta de suporte ao Paypal Express).

Solução preferida

A primeira coisa que recomendo é verificar se você usa a versão mais recente da extensão Reward Points Pro, pois eles já podem ter adicionado suporte ao Paypal Express ou corrigido o problema que está ocorrendo. Caso contrário, entre em contato com o suporte e tente obter ajuda deles.

Solução personalizada

NOTA: Por favor, nunca modifique um arquivo Magento principal. Se não houver alternativa (usando um observador, etc), copie o arquivo no conjunto de códigos local e substitua-o.

Você deve dar uma olhada no arquivo app / code / core / Mage / Paypal / Model / Cart.php line # 318 . Como você pode ver, o Magento despacha um evento que você pode usar para tentar corrigir esse problema.
Ao observar esse evento, você poderá acessar o objeto Mage_Paypal_Model_Cart real que contém os itens e totais do carrinho que serão enviados ao Paypal.

Sinto muito, mas não sabendo como a extensão Reward Points Pro funciona internamente, não posso fornecer orientações exatas com código e tudo mais. Basicamente, você deve tentar entender o que acontece nos métodos _render () e _validate () em app / code / core / Mage / Paypal / Model / Cart.php e garantir que o desconto do uso de pontos seja aplicado corretamente.

Além disso, não consegui entender exatamente a última parte após o código, mas entre em contato se tiver alguma dúvida.

Vlad Vanca
fonte
Excelentes soluções, funciona perfeitamente, mas é necessário mais uma modificação. No mesmo arquivo php, existe mais um método _addRegularItem (). Quantidade mencionada lá também. Tem que modificar isso.
Butterfly
0

O problema não está no código, mas é um problema de configuração. Apenas certifique-se de que seu imposto seja aplicado ao subtotal em vez do total geral. Verifique a captura de tela em anexo. Verifique se "Transferir itens de linha do carrinho" está definido como YES e também "Transfer Transfer Options" como YES.insira a descrição da imagem aqui

Emiliano
fonte
0

Tivemos os mesmos erros de paypal e descobrimos que quando um artigo é "isento de impostos" o problema desaparece. Por isso, desativamos um plug-in de pagamento parcial que recalculou alguns totais. Então isso ajudou no nosso caso.

TonkBerlin
fonte