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