[Urgente] Errores de punto flotante en parametro amount
Closed this issue · 1 comments
Probando la libreria me encontre con el siguiente caso.
Tratando de cobrar 8.13 ( valor de tipo double ) la api da error ya que en la libreria si bien su valor se multiplica *100 y el resultado es 813 su representacion es en punto flotante ( tiene errores de precision ) , esto hace que cuando se convierta a json para enviar a la api de sps el parametro amount quede en "813.00000000...1"
Reproduccion del error:
Version PHP 7.1
http://sandbox.onlinephpfunctions.com/code/2dae9fd6c16253a0bba682c8e84af89938ca31ea
Documentacion:
http://php.net/manual/es/language.types.float.php
Posible solucion:
Payment.php
public function rmDecAmount($amount){
$formatedAmount = (int)($amount*100);
return $formatedAmount;
}
Esa solucion funciona en mi caso.
Otra posible solucion es usar http://php.net/manual/es/book.bc.php , se comporta como los tipos "decimal/numeric" de precision arbitraria ( no tienen error de representacion numerica )
Saludos
Solucionado en version 1.2.0