Si vous utilisez la bibliothèque PHP GoCardless avec PHP 7.1 ou une version ultérieure, un message d'erreur indiquant « Un des paramètres a été mal saisi » peut s'afficher lorsque vous essayez d'envoyer des numéros à l'API (spécifiant un montant lorsque vous créez un paiement par exemple).
Cela se produira uniquement si vous avez personnalisé l'option serialize_precision
, en modifiant la valeur par défaut -1
.
PHP 7.1 modifie le comportement du paramètre json_encode
afin d'utiliser cette option pour décider comment générer les nombres dans JSON.
Lorsque l'option est définie sur la valeur par défaut, -1
, PHP arrondit les nombres de façon intelligente mais, avec d'autres valeurs, trop de décimales seront envoyées à l'API (par exemple, le nombre 3509.00 peut être sérialisé erronément sous la forme 3509.0000000000005 au lieu de 3509), ce qui rend les données non valides.
Vous pouvez résoudre ce problème de deux manières :
- Reconfigurer l'option
serialize_precision
de PHP sur-1
(vous pouvez le faire dans votre fichierphp.ini
ou pendant l'exécution en utilisantini_set
. Cela peut générer des problèmes si votre code s'appuie ailleurs sur la manière dont les nombres sont sérialisés. - Assurez-vous de transmettre les nombres à la bibliothèque PHP GoCardless sous la forme de nombres entiers ou de chaînes.