payway-ar/sdk-php-ventaonline

[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

@drarko @damianwajser

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