直接貼代碼 邏輯很簡單 一些小接口沒有 查詢另一篇博客:http://www.javashuo.com/article/p-azwpdbqh-e.htmlhtml
{ //根據 商戶訂單號 查詢DB OrderInfo orderInfo = orderInfoMapper.selectByOutTradeNo(outTradeNo); logger.info("根據商戶訂單號 查詢訂單數據JSON:" + JSONObject.toJSONString(orderInfo)); if(orderInfo != null){ //查詢 訂單 成功 //判斷訂單狀態 if(1 == orderInfo.getPayStatus()){ //等待支付 證實微信未回調咱們 logger.info("訂單狀態爲:等待支付 查詢微信端是否支付成功"); //建立hashmap(查詢訂單) SortedMap<String, String> paraMap = new TreeMap<String, String>(); //設置隨機字符串 String nonceStr = UUID.randomUUID().toString().replaceAll("-", ""); //設置請求參數(小程序ID) paraMap.put("appid", appid); //設置請求參數(商戶號) paraMap.put("mch_id", mch_id); //設置請求參數(商戶訂單號) paraMap.put("out_trade_no", outTradeNo); //設置請求參數(隨機字符串) paraMap.put("nonce_str", nonceStr); //調用邏輯傳入參數按照字段名的 ASCII 碼從小到大排序(字典序) String stringA = formatUrlMap(paraMap, false, false); //第二步,在stringA最後拼接上key獲得stringSignTemp字符串,並對stringSignTemp進行MD5運算,再將獲得的字符串全部字符轉換爲大寫,獲得sign值signValue。(簽名) String sign = MD5Util.MD5(stringA+"&key="+key).toUpperCase(); //將參數 編寫XML格式 StringBuffer paramBuffer = new StringBuffer(); paramBuffer.append("<xml>"); paramBuffer.append("<appid>"+appid+"</appid>"); paramBuffer.append("<mch_id>"+mch_id+"</mch_id>"); paramBuffer.append("<out_trade_no>"+paraMap.get("out_trade_no")+"</out_trade_no>"); paramBuffer.append("<nonce_str>"+paraMap.get("nonce_str")+"</nonce_str>"); paramBuffer.append("<sign>"+sign+"</sign>"); paramBuffer.append("</xml>"); try{ //發送請求(POST)(得到數據包ID)(這有個注意的地方 若是不轉碼成ISO8859-1則會告訴你body不是UTF8編碼 就算你改爲UTF8編碼也同樣很差使 因此修改爲ISO8859-1) Map<String,String> map = doXMLParse(getRemotePortData(selectOrderUrl, new String(paramBuffer.toString().getBytes(), "ISO8859-1"))); logger.info("查詢微信訂單接口 返回結果 JSON格式:" + JSONObject.toJSONString(map)); //避免null if(map != null){ //判斷是否成功 String return_code = map.get("return_code"); String result_code = map.get("result_code"); if("SUCCESS".equals(return_code) && "SUCCESS".equals(result_code)){ logger.info("查詢微信訂單接口 查詢成功"); outTradeNo = map.get("out_trade_no"); logger.info("微信端返回 商戶訂單號 " + outTradeNo); String userId = sessionUserInfo.getUserId(); String tradeState = map.get("trade_state"); logger.info("微信端返回 訂單狀態:" + tradeState); String tradeStateDesc = map.get("trade_state_desc"); logger.info("微信端返回 訂單狀態描述:" + tradeStateDesc); String payStatus = null; } } }catch (Exception e){ logger.info("查詢微信訂單異常:" + e.getMessage()); } }else{ logger.info("查詢訂單,微信已經回調過接口 數據庫狀態已改變,將狀態返回給前端"); } } }