Bande Caisse Prix d'erreur Invalide Entier
J'ai une bande de compte et je suis en utilisant le test de clés API.
J'ai créé un Plan avec les informations suivantes -
{
"amount": 995,
"created": 1418800758,
"currency": "usd",
"id": "c06e1791-1c6a-45fe-9c26-8f0c07dda967",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {},
"name": "Pro2",
"object": "plan",
"statement_description": null,
"statement_descriptor": null,
"trial_period_days": null
}
Je suis en utilisant checkout.js dans mon projet.
Une fois que toutes les données sont remplies et nous, cliquez sur "payer pour le plan ci-dessus, il génère une erreur "Invalid Entier 994.999999999'.
Cette erreur ne se pose pas pour l' $9.94, $9.96, $29.95 et d'autres valeurs essayé par moi.
Est-ce une caisse bug ou quelque chose à faire avec mes réglages ??
Capture d'écran de l'erreur -
jsfiddle reproduire l'erreur - http://jsfiddle.net/f30z9uc6/2/
Où est l'erreur qui se passe exactement? Sur la Bande de la Caisse lors de la création du jeton ou sur le serveur lors de la Création d'une charge ou d'un abonnement? Pourriez-vous partager votre code ? Êtes-vous en train de calculer le montant et puis peut-être une erreur d'arrondi problème?
L'erreur se produit à la caisse avant de créer le jeton. Et le prix est statique.Extrait de la bande de plan.
le montant
J'ai été en mesure de reproduire l'erreur dans jsfiddle - jsfiddle.net/f30z9uc6/2
L'erreur se produit à la caisse avant de créer le jeton. Et le prix est statique.Extrait de la bande de plan.
le montant
995
fonctionne comme montré ici: jsfiddle.net/4ykh2dh7 il doit y avoir quelque chose d'autre se passe. Pouvez-vous montrer une URL où ce qui se passe? Vous devez avoir quelque chose d'analyse du prix et réglage de la data-amount
à la bonne valeurJ'ai été en mesure de reproduire l'erreur dans jsfiddle - jsfiddle.net/f30z9uc6/2
OriginalL'auteur torment32 | 2015-01-19
Vous devez vous connecter pour publier un commentaire.
Le problème ici, c'est une erreur de virgule flottante en Javascript. Si vous regardez cette version mise à jour de votre jsfiddle vous allez voir ce qui se passe et comment je l'ai corrigé. Vous devez arrondir le résultat de votre calcul pour s'assurer vous vous retrouvez avec un nombre entier:
Lire plus à propos de Javascript et de l'arithmétique à virgule flottante, vous devriez regarder dans La Virgule Flottante Guide
Math.round(TotalPrice.toFixed(2)*100)
Ne arrondi faire +/- dans le montant prix @MatthewBennett ?
Oui et non. Je veux dire, vous pourriez perdu un dixième de un cent, mais ce n'est pas quelque chose qui me semble importante. Vous pouvez toujours round up si il le faut.
Semble être travaillé jusqu'à présent, @codemilan, au moins à tous les prix, je l'ai vérifié avec. Stripe a récemment soulevé un couple de décimales des erreurs, mais je pense que c'est lié à quelque chose d'autre, pas ce code.
OriginalL'auteur koopajah
Avant de vous envoyer la variable de la bande que vous avez à la ronde de max. 2 décimales. Donc il fonctionnera.
Pourquoi?
Parce que la Bande multiplie votre valeur avec 100 et le résultat doit être un entier, sinon vous obtenez le message d'erreur.
OriginalL'auteur mart
Si la monnaie est le dollar us, la valeur est dans les cents pas des dollars, de sorte que 2, est de 2 centimes, 50 ans, est de 50 cents.
Apparemment.
OriginalL'auteur Alexander Mills