微信支付失败,返回invalid total_fee(高效精准解决方法)

这个问题是微信的支付与支付宝价格单元的区别
支付宝是以元为单位,微信是以分为单位,
所以需要先把微信支付里接收到的参数转化为分,下面附送转化方法,
可直接调用

 /**
     * 元转换成分
     * @param amount
     * @return
     */
    public static String getMoney(String amount) {
        if(amount==null){
            return "";
        }
        // 金额转化为分为单位
        // 处理包含, ¥ 或者$的金额
        String currency =  amount.replaceAll("\\$|\\¥|\\,", "");
        int index = currency.indexOf(".");
        int length = currency.length();
        Long amLong = 0l;
        if(index == -1){
            amLong = Long.valueOf(currency+"00");
        }else if(length - index >= 3){
            amLong = Long.valueOf((currency.substring(0, index+3)).replace(".", ""));
        }else if(length - index == 2){
            amLong = Long.valueOf((currency.substring(0, index+2)).replace(".", "")+0);
        }else{
            amLong = Long.valueOf((currency.substring(0, index+1)).replace(".", "")+"00");
        }
        return amLong.toString();
    }

至此在微信支付方法中,直接调用上述方式getMoney() 就可以转化为分了,记得先把钱的值转化为String哦~

猜你喜欢

转载自blog.csdn.net/weixin_40753536/article/details/88393664