Magento 1.9.0.1 Error de PayPal Los totales de los importes de los artículos del carrito no coinciden con los importes de los pedidos (# 10413:

9

es que usando magento 1.9.0.1 se ha integrado la caja express paypal, además de esto tienes el plugin pro puntos de recompensa como puntos de recompensa para comprar algunos productos que cuando se convirtió en la integración y comprar productos sin usar puntos de recompesa, pago por paypal nigun se puede hacer sin problemas, pero cuando los clientes usan puntos de recompensa, un error al confirmar el pedido, que es

La puerta de enlace de PayPal rechazó la solicitud. Los totales del artículo del carrito Montos Los montos no coinciden con el pedido (# 10413: Transacción rechazada debido a un argumento no válido Ver mensajes de error adicionales para más detalles).

Buscando en la red para tratar de corregir este error, sugiero que pueda modificar el archivo Nav.php paypal agregando cualquiera de los dos códigos que pongo a continuación:

primer código

// Hack Start

$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;
}

//final

Agregar cualquiera de los códigos, si está permitido y realizar el pago de esos puntos de descuento, pero el problema es que cuando ve el pago de PayPal, está cobrando el monto del descuento en lugar del monto total, el tiempo que los clientes de PayPal inician sesión y pasan por el caja express, todos los montos son correctos y desglozadas al final el monto total del pago está bien, regrese a la tienda y confirme el pedido, que se realiza con éxito, pero cuando el pago de paypal en el monto del descuento es lo que recibimos, ejemplifica a acláralo

Costo del producto> 340 puntos usuados por cliente> 125 equivalentes a 20.54 Total de compra en tienda y paypal en caja expres> 319.46 Cantidad recibda para ver la cuenta en paypal> 20.54

Aparte de esto, cuando se realiza la compra de puntos de recompensa no utilizados, aparece un error que indica que el monto de la transacción es válido porque es Cero.

Me ha intrigado ver cuáles son los códigos de error para modificarlo, pero no puedo hacerlo, no si alguien sabe que tengo que hacerlo o puedo ayudarlo.

Uriel Castillo
fuente
¿Dónde se encuentra el Nav.php?
Giuseppe
¿Su problema está resuelto o no?
Gema

Respuestas:

7

Problema

El problema es bastante claro en el mensaje: el total de las cantidades de los artículos y la cantidad total del carrito que se envían a Paypal no coinciden.
Como lo ha descubierto, esto parece ser un problema con esa extensión de puntos (o la falta total de soporte para Paypal Express).

Solución preferida

Lo primero que recomiendo es verificar que use la última versión de la extensión Reward Points Pro, ya que pueden haber agregado soporte para Paypal Express o haber solucionado el problema con el que se encuentra. Si no es así, póngase en contacto con su soporte e intente obtener ayuda de ellos.

Solución personalizada

NOTA: Nunca modifique nunca un archivo principal de Magento. Si no hay alternativa (usando un observador, etc.), copie el archivo en el grupo de códigos local y sobrescriba allí.

Debe echar un vistazo a la aplicación de archivo / código / core / Mage / Paypal / Model / Cart.php línea # 318 . Como puede ver, Magento envía un evento allí que puede usar para intentar solucionar este problema.
Al observar ese evento, podrá acceder al objeto Mage_Paypal_Model_Cart real que contiene los artículos y los totales del carrito que se enviará a Paypal.

Lo siento, pero sin saber cómo funciona internamente la extensión Reward Points Pro, no puedo darle una guía exacta con el código y todo. Básicamente, debe tratar de comprender lo que sucede en los métodos _render () y _validate () en app / code / core / Mage / Paypal / Model / Cart.php y asegurarse de que el descuento por usar puntos se aplique correctamente.

Además, no pude entender exactamente la última parte después del código, pero avíseme si tiene alguna pregunta.

Vlad Vanca
fuente
Excelentes soluciones, funciona perfectamente, pero requiere una modificación más. En el mismo archivo php hay un método más _addRegularItem (). Cantidad mencionada allí también. Tiene que modificar eso.
Mariposa
0

El problema no está en el código, pero es un problema de configuración. Solo asegúrese de que su impuesto se aplique al subtotal en lugar del total general. Verifique la captura de pantalla adjunta. Asegúrese de que sus "Líneas de pedido del carro de transferencia" estén configuradas en SÍ y también las "Opciones de envío de transferencia" en SÍ.ingrese la descripción de la imagen aquí

Emiliano
fuente
0

Tuvimos los mismos errores de PayPal y descubrimos que cuando un artículo trata de "libre de impuestos" el problema desaparece. Así que desactivamos un complemento de pago parcial que recalculaba algunos totales. Entonces esto ayudó en nuestro caso.

TonkBerlin
fuente