Observen que el item 0 tiene varios decimales 9, ese importe deberia haber sido 8132 (entero)
Resulta que a lo largo de la librería se utilizaba un método para formatear los montos:
public function rmDecAmount($amount){
$formatedAmount = intval($amount*100);
return $formatedAmount;
}
Pues he observado que en las Clases de las Verticales de Cybersource este método no se utiliza... y se efectúa la misma conversión pero.... sin castear o convertir a numero entero
Por Ejemplo:
Versión: 1.5.6
Archivo: Decidir\lib\Cybersource\Retail.php
Linea: 104
$product[$idProd] = ($product[$idProd]*100);
y debería tener al menos un casteo:
$product[$idProd] = (int) ($product[$idProd]*100);
Hola, bueno llevo ya unas horas tratando de resolver este error y pues lo he logrado, al menos en las pruebas que he echo funciono.
Al debuguear manualmente me encontré con estos valores en el request
retail_transaction_data.items contenia:
Observen que el item 0 tiene varios decimales 9, ese importe deberia haber sido 8132 (entero)
Resulta que a lo largo de la librería se utilizaba un método para formatear los montos:
Pues he observado que en las Clases de las Verticales de Cybersource este método no se utiliza... y se efectúa la misma conversión pero.... sin castear o convertir a numero entero
Por Ejemplo: Versión: 1.5.6 Archivo: Decidir\lib\Cybersource\Retail.php Linea: 104
$product[$idProd] = ($product[$idProd]*100);
y debería tener al menos un casteo:$product[$idProd] = (int) ($product[$idProd]*100);
Les dejo un Pull Request: https://github.com/payway-ar/sdk-php-ventaonline/pull/55
Saludos!