2015-01-19 13 views
5

Ho un account stripe e sto usando le chiavi API di test.Errore righe Errore di prezzo - Intero non valido

ho creato un piano con le seguenti informazioni -

{ 
    "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 
} 

sto usando checkout.js nel mio progetto. Una volta che tutti i dati sono stati compilati e facciamo clic su Paga per il piano sopra riportato, viene generato un errore "Intero non valido 994,9999,9999".

Questo errore non viene generato per $ 9,94, $ 9,96, $ 29,95 e altri valori provati da me.

Si tratta di un bug di verifica o qualcosa a che fare con le mie impostazioni ??

screenshot dell'errore -

Stripe error message

jsfiddle riprodurre l'errore - http://jsfiddle.net/f30z9uc6/2/

+0

Dove si verifica esattamente l'errore? On Stripe Checkout durante la creazione del token o sul server quando si crea un addebito o un abbonamento? Potresti condividere il tuo codice? Stai cercando di calcolare l'importo e quindi forse un problema di errore di arrotondamento? – koopajah

+0

L'errore si verifica al checkout prima di creare il token. E il prezzo è statico. Prelevato dal piano striscia. – torment32

+0

l'importo '995' funziona come mostrato qui: http://jsfiddle.net/4ykh2dh7/ ci deve essere qualcos'altro in corso. Puoi mostrare un URL dove questo accade? Devi avere qualcosa che analizza il prezzo e impostare 'data-amount' sul valore sbagliato – koopajah

risposta

15

Il problema qui è un errore di floating point in Javascript. Se guardi questa versione aggiornata del tuo jsfiddle vedrai cosa sta succedendo e come l'ho risolto. È necessario arrotondare il risultato del calcolo per garantire la si finisce con un numero intero:

var amount = Math.round(9.95*100); // gives 995 

Per saperne di più su Javascript e aritmetica in virgola mobile si dovrebbe guardare in The Floating-Point Guide

+1

Questo è stato utile solo per me con quantità di stripe. Funziona così se qualcuno ne ha bisogno: 'Math.round (TotalPrice.toFixed (2) * 100)' –

-1

Prima di inviare la variabile per mettere a nudo devi arrotondare al massimo 2 decimali. Quindi funzionerà.

Perché? Poiché Stripe moltiplica il valore con 100 e il risultato deve essere un numero intero, altrimenti viene visualizzato il messaggio di errore.

Problemi correlati