You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Stripe传入小数金额报错parameter_invalid_integer

解决Flutter调用Stripe Payment Intent时小数金额报错的问题

Stripe的Payment Intent接口对amount参数有明确要求:必须传入对应货币最小单位的整数值,而非常规的小数金额。比如你要收16.99元人民币(或美元),实际需要传入的是1699(因为1元=100分),直接传16.99就会触发你遇到的parameter_invalid_integer错误。

解决步骤:

  • 确认货币最小单位:绝大多数货币(人民币、美元、欧元等)的最小单位是"分",需将原金额乘以100转换为整数;少数货币(如日元)无分单位,直接传入原金额整数即可。
  • Flutter中安全转换金额:
    注意直接浮点运算可能出现精度问题(比如16.99 * 100可能得到1698.9999999999998),推荐两种稳妥方式:
    1. 用round()方法处理浮点值:
      double originalPrice = 16.99;
      int stripeAmount = (originalPrice * 100).round();
      
    2. 转为字符串后移除小数点(适合从接口/数据库读取的字符串金额):
      String originalPriceStr = "16.99";
      int stripeAmount = int.parse(originalPriceStr.replaceAll('.', ''));
      
  • 调用接口传入转换后的整数:将得到的stripeAmount作为Payment Intent的amount参数传入,即可正常发起请求。

内容的提问来源于stack exchange,提问作者Freaked Out

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:17:06