对接微信支付时报错误 invalid

2023-05-16

报错信息很明白invalid total_fee是total_fee参数无效的意思.
根据微信sdk示例及文档要求发现是要填String类型的数据
但是我用的是BigDecimal类型的参数.toString().按道理来讲是String类型应该是没问题的,此时觉得报错很不应该啊.很愁

但是微信的金额要求是以分为单位,所以需要乘100才出现的问题,那么试试乘100之后再转字符串跟字符串的区别在哪里.
以下为运行代码:

BigDecimal a = new BigDecimal("100").multiply(new BigDecimal("0.01"));

        System.out.println("toString(): " + a.toString());
        System.out.println("String.valueOf(): " + String.valueOf(a));
        System.out.println("toPlainString(): " + a.toPlainString()); //避免出现科学计数法
        System.out.println("toEngineeringString(): " + a.toEngineeringString()); //有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法,与科学计数法类似,但要求10的幂必须是3的倍数
        System.out.println("stripTrailingZeros(): " + a.stripTrailingZeros().toString()); //先去掉多余的0再转字符串
        System.out.println("1");

运行结果:
在这里插入图片描述

完了之后发现多了.00
找到问题就好说了.

结果:
去掉多余的0再toString.解决
a.stripTrailingZeros().toString()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对接微信支付时报错误 invalid 的相关文章

随机推荐