【问题标题】:Stripe Checkout Price error - Invalid Integer条纹结帐价格错误 - 无效整数
【发布时间】:2015-03-17 12:40:08
【问题描述】:

我有一个条带帐户,并且正在使用测试 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/

【问题讨论】:

  • 错误到底发生在哪里?创建令牌时在 Stripe Checkout 上还是在创建费用或订阅时在服务器上?你能分享你的代码吗?您是否尝试计算金额,然后可能是舍入错误问题?
  • 在创建令牌之前结帐时出现错误。而且价格是静态的。从条纹计划中获取。
  • 995 的数量如下所示:jsfiddle.net/4ykh2dh7 一定有其他事情发生。你能显示一个发生这种情况的 URL 吗?您必须有一些东西可以解析价格并将data-amount 设置为错误的值
  • @koopajah 我能够重现 jsfiddle 中的错误 - jsfiddle.net/f30z9uc6/2

标签: checkout stripe-payments


【解决方案1】:

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

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

要了解有关 Javascript 和浮点运算的更多信息,您应该查看 The Floating-Point Guide

【讨论】:

  • 这对我使用 Stripe 数量很有用。如果有人需要,可以这样工作:Math.round(TotalPrice.toFixed(2)*100)
  • 四舍五入是否使价格金额为 +/- @MatthewBennett?
  • 是和不是。我的意思是你可能会损失十分之一美分,但这似乎并不重要。如果重要,您可以随时进行汇总。
  • 到目前为止似乎有效,@codemilan,至少在我检查过的所有价格方面。 Stripe 最近提出了几个小数错误,但我认为这与其他内容有关,而不是这段代码。
【解决方案2】:

在将变量发送到剥离之前,您必须四舍五入到最大值。 2 位小数。所以它会起作用。

为什么? 因为 Stripe 将您的值乘以 100,结果必须是整数 - 否则您会收到错误消息。

【讨论】:

    【解决方案3】:

    如果货币是美元,价值是美分而不是美元,所以 2 是 2 美分,50 是 50 美分。 显然。

    【讨论】:

      【解决方案4】:

      在将值传递给后端之前,我在条带帐户中遇到了同样的问题,只需将您的值从对象转换为像这样的简单整数

      enter code here
      
       const TotalItems = data
       .map(function(item) {
        return item.total;
      })
      .reduce(function(curval, newval) {
        return curval + newval;
      });
      

      【讨论】:

        猜你喜欢
        • 2018-05-27
        • 2014-06-01
        • 1970-01-01
        • 2016-05-09
        • 2021-01-08
        • 2012-08-10
        • 2015-11-05
        • 2017-01-22
        • 1970-01-01
        相关资源
        最近更新 更多