Stripe Checkout Price error - Invalid Integer

独自空忆成欢 提交于 2019-12-05 15:08:07

问题


I have a stripe account and am using the test API keys.

I have created a Plan with following 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
}

I'm using checkout.js in my project. Once all the data is filled and we click on pay for the above plan, it raises an error 'Invalid Integer 994.999999999'.

This error is not raised for the $9.94, $9.96, $29.95 and other values tried by me.

Is this a checkout bug or something to do with my settings ??

Screenshot of the error -

jsfiddle reproducing the error - http://jsfiddle.net/f30z9uc6/2/


回答1:


The problem here is a floating point error in Javascript. If you look at this updated version of your jsfiddle you'll see what's happening and how I fixed it. You need to round the result of your calculation to ensure you end up with an integer:

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

To read more about Javascript and floating point arithmetic you should look into The Floating-Point Guide




回答2:


Before you send the variable to strip you have to round to max. 2 decimals. So it will work.

Why? Because Stripe multiplies your value with 100 and the result has to be an integer - otherwise you get the error message.




回答3:


If currency is USD, the value is in cents not dollars, so 2, is 2 cents, 50, is 50 cents. Apparently.



来源:https://stackoverflow.com/questions/28025804/stripe-checkout-price-error-invalid-integer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!