//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,類型只能爲整數。