微信查詢訂單

直接貼代碼 邏輯很簡單 一些小接口沒有 查詢另一篇博客: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("查詢訂單,微信已經回調過接口 數據庫狀態已改變,將狀態返回給前端");
                }
            }
        }
相關文章
相關標籤/搜索