微信支付接口簽名錯誤問題

 //1.封裝參數
        Map param = new HashMap();
        param.put("appid", appid);//公衆賬號ID
        param.put("mch_id", partner);//商戶號
        param.put("nonce_str", WXPayUtil.generateNonceStr());//隨機字符串
        param.put("body", "dashabi");//商品描述
        param.put("out_trade_no", out_trade_no);//商戶訂單號
        param.put("total_fee", total_fee);//標價金額
        param.put("spbill_create_ip", "127.0.0.1");//終端IP
        param.put("notify_url", "www.baidu.com");//通知地址
        param.put("trade_type", "NATIVE");//交易類型
        //2.生成要發送的xml
        try {
            //簽名
            String xmlParam = WXPayUtil.generateSignedXml(param, partnerkey);
            System.out.println(xmlParam);
            //發送參數給微信接口
            HttpClient httpClient = new HttpClient("https://api.mch.weixin.qq.com/pay/unifiedorder");
            httpClient.setHttps(true);
            httpClient.setXmlParam(xmlParam);
            httpClient.post();

            //3.獲得結果
            String result = httpClient.getContent();
            System.out.println("返回結果:" + result);
            Map<String, String> resultMap = WXPayUtil.xmlToMap(result);
            //創建一個map,封裝我們想返回的結果內容
            Map map = new HashMap();
            map.put("code_url", resultMap.get("code_url"));
            map.put("total_fee", total_fee);
            map.put("out_trade_no", out_trade_no);
            return map;

1.遇到了返回結果簽名錯誤,經排查,發現是微信接受的total_fee 金額只接受整數,單位爲分,因此傳入的金額需要先乘以1000,類型只能爲整數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章