条带检出价格错误 - 无效的整数

tor*_*t32 12 checkout stripe-payments

我有一个条带帐户,我正在使用测试API密钥.

我创建了一个包含以下信息的计划 -

{
  "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
}
Run Code Online (Sandbox Code Playgroud)

我在我的项目中使用checkout.js.填写完所有数据并点击上述计划的付款后,会引发错误"无效整数994.999999999".

9.94美元,9.96美元,29.95美元以及我试过的其他价值不会引发此错误.

这是一个结帐错误还是与我的设置有关?

错误的屏幕截图 -

条带错误消息

jsfiddle再现错误 - http://jsfiddle.net/f30z9uc6/2/

koo*_*jah 26

这里的问题是Javascript中的浮点错误.如果你看看你的jsfiddle的这个更新版本,你会看到发生了什么以及我如何修复它.您需要对计算结果进行舍入,以确保最终得到一个整数:

var amount = Math.round(9.95*100); // gives 995
Run Code Online (Sandbox Code Playgroud)

要阅读有关Javascript和浮点运算的更多信息,您应该查看"浮点指南"

  • 这对我来说对Stripe数量非常有用.如果有人需要它就像这样工作:`Math.round(TotalPrice.toFixed(2)*100)` (3认同)
  • 四舍五入使得+/-的价格是否超过@MatthewBennett? (3认同)