Stripe Checkout Price error - Invalid Integer
我有一个条带帐户,并且正在使用测试 API 密钥。
我创建了一个包含以下信息的计划 -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | { "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 } |
我在我的项目中使用 checkout.js。
填写完所有数据并单击上述计划的付款后,它会引发错误 \\'Invalid Integer 994.999999999\\'。
对于我尝试的 $9.94、$9.96、$29.95 和其他值不会引发此错误。
这是结帐错误还是与我的设置有关??
错误截图 -
jsfiddle 重现错误 - http://jsfiddle.net/f30z9uc6/2/
这里的问题是 Javascript 中的浮点错误。如果您查看 jsfiddle 的这个更新版本,您会看到发生了什么以及我是如何修复它的。您需要对计算结果进行四舍五入,以确保最终得到一个整数:
1 | var amount = Math.round(9.95*100); // gives 995 |
要阅读有关 Javascript 和浮点运算的更多信息,您应该查看浮点指南
在将变量发送到剥离之前,您必须四舍五入到最大值。 2 位小数。所以它会起作用。
为什么?
因为 Stripe 将您的值乘以 100,结果必须是整数 - 否则您会收到错误消息。
如果货币是美元,价值是美分而不是美元,所以 2 是 2 美分,50 是 50 美分。
显然。
在将值传递给后端之前,我在条带帐户中遇到了同样的问题,只需将您的值从对象转换为像这样的简单整数
1 2 3 4 5 6 7 8 9 | enter code here const TotalItems = data .map(function(item) { return item.total; }) .reduce(function(curval, newval) { return curval + newval; }); |