Wenn Sie die GoCardless-PHP-Bibliothek mit PHP 7.1 oder höher verwenden, wird möglicherweise der Fehler „Einer Ihrer Parameter wurde falsch eingegeben“ angezeigt, wenn Sie Zahlen an die API senden möchten (beispielsweise bei der Angabe eines Betrags, wenn Sie eine Zahlung erstellen).
Dies geschieht nur, wenn Sie die PHP-Option serialize_precision
angepasst, d. h. den Standardwert -1
geändert haben.
PHP 7.1 ändert das Verhalten von json_encode
, sodass anhand dieser Option entschieden wird, wie Zahlen in JSON ausgegeben werden.
Wenn die Option auf den Standardwert -1
gesetzt ist, kann PHP ordnungsgemäß runden. Bei anderen Werten werden jedoch zu viele Dezimalstellen an die API gesendet (die Zahl 3509,00 wird z. B. möglicherweise als 3509,0000000000005 statt als 3509 serialisiert), sodass die Daten ungültig werden.
Sie können dieses Problem auf zwei Arten beheben:
- Setzen Sie die PHP-Option
serialize_precision
auf-1
(entweder in derphp.ini
oder zur Laufzeit anhand vonini_set
). Dies kann jedoch Probleme verursachen, wenn Ihr Code an anderen Stellen davon abhängt, wie Zahlen serialisiert werden. - Zahlen müssen als ganze Zahlen oder Zeichenfolgen an die GoCardless-PHP-Bibliothek übergeben werden.