微信公众号支付报错invalid total_fee的解决方法

  • A+
所属分类:微信公众号

具体报错如下:

2018-12-14 13:55:46.102  INFO 11408 --- [nio-8080-exec-4] tesglog                                  : pay result : <xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[invalid total_fee]]></return_msg></xml>

根据错误不难发现是因为total_fee不正确。

由于微信支付里的total_fee的单位是分。所以实际金额得乘以100。但是问题来了,前端传给后台string型的,现在要乘以100,可能很多人跟我一样,首先想到的是把string转成Double型再乘以100,我就是这样做的,然后就报了上面的错。

那么问题出在哪呢?我新建了一个空的工程来测试

Double.parseDouble(money)*100的结果,然后我发现,如果传过来的money为12,输出的结果是12.0,估计就是这个.0导致了上面的错误。

那也是说不能带小数点,得把小数部分去掉,可以用java自带的

Math.round()方法,写法如下:

String moneyNew = String.valueOf(Math.round(Double.parseDouble(money)*100));

 

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: