Si utilizas la biblioteca PHP de GoCardless con PHP 7.1 o una versión posterior, es posible que veas un mensaje de error que indica que "uno de los parámetros se ha escrito incorrectamente" al intentar enviar números a la API (por ejemplo, al especificar una cantidad cuando se crea un pago).
Esto solo ocurrirá si has personalizado la opción serialize_precision
de PHP, y has cambiado el valor predeterminado de -1
.
PHP 7.1 cambia el comportamiento de json_encode
para que pueda utilizar esta opción para decidir cómo generar números en JSON.
Cuando la opción se configura en el valor predeterminado, -1
, PHP realiza un redondeo inteligente, pero con otros valores, se acabarán enviando demasiados decimales a la API (por ejemplo, el número 3509,00 puede, erróneamente, ser serializado como 3509,0000000000005 en lugar de 3509), lo cual hará que los datos no sean válidos.
Hay dos formas de solucionar este problema:
- Reconfigurar la opción
serialize_precision
de PHP con el valor-1
(puedes hacerlo en elphp.ini
, o durante el tiempo de ejecución a través deini_set
. Esto podría causar problemas si el código basa cómo se serializan los números en otra parte. - Asegúrate de que los números pasen a la biblioteca PHP de GoCardless como enteros o cadenas.