Stripe Checkout-Preis-error - Invalid Integer
Ich habe ein stripe-Konto und bin mit der test-API-keys.
Habe ich einen Plan mit folgenden info -
{
"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
}
Ich bin mit checkout.js in meinem Projekt.
Sobald alle Daten ausgefüllt ist und wir klicken auf die zahlen für die über plan, es wirft eine Fehlermeldung 'Ungültige Ganzzahl 994.999999999'.
Dieser Fehler wird nicht erhoben für die $9.94, $9.96, $29.95-und andere Werte probiert von mir.
Ist dieser ein checkout Fehler oder etwas zu tun mit meinen Einstellungen ??
Screenshot von der Fehler -
jsfiddle Reproduktion des Fehler - http://jsfiddle.net/f30z9uc6/2/
- Wo ist der Fehler passiert genau? Auf Stripe Checkout bei der Erstellung der token oder auf dem server bei der Erstellung eine Gebühr oder ein Abonnement? Könnten Sie teilen Ihren code ? Sind Sie versuchen, berechnen die Höhe und dann vielleicht ein Rundungsfehler Problem?
- Der Fehler tritt an der Kasse vor dem erstellen des token. Und der Preis ist statisch.Holte aus dem Streifen plan.
- die Menge
995
funktioniert wie hier gezeigt: jsfiddle.net/4ykh2dh7 es muss etwas anderes passiert sein. Können Sie eine URL, wo das passiert? Sie müssen etwas haben, das Parsen der Preis und die Einstellungdata-amount
auf den falschen Wert - Ich war in der Lage, den Fehler zu reproduzieren in jsfiddle - jsfiddle.net/f30z9uc6/2
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem hier ist ein floating-point-Fehler im Javascript. Wenn Sie einen Blick auf diese aktualisierte version Ihrer jsfiddle Sie werden sehen, was passiert ist und wie ich es behoben. Sie müssen Runde das Ergebnis Ihrer Berechnung um sicherzustellen, dass Sie am Ende mit einer ganzen Zahl:
Lesen Sie mehr über Javascript-und Gleitkomma-Arithmetik, die Sie in Aussehen sollte Die Floating-Point-Guide
Math.round(TotalPrice.toFixed(2)*100)
Bevor Sie senden die variable zu Streifen, die Sie haben, um Runde bis max. 2 Dezimalstellen. So wird es funktionieren.
Warum?
Weil Streifen, multipliziert sich Ihr Wert mit 100 und das Ergebnis muss eine ganze Zahl sein - sonst erhalten Sie die Fehlermeldung.
Wenn die Währung USD ist, ist der Wert in Cent, nicht Dollar, so 2 -, 2 Cent -, 50, ist 50 Cent.
Anscheinend.