微信支付失败,返回invalid total_fee

一、问题描述


微信支付金额使用"0.01",去支付,返回错误信息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();
    }
如:

String totalFee = getMoney("0.1");  //1 -- 0.01  10 -- 10



你可能感兴趣的:(支付开发)