微信查询订单
直接贴代码 逻辑很简单 一些小接口没有 查询另外一篇博客:https://www.cnblogs.com/yi1036943655/p/7211275.html
{ //根据 商户订单号 查询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("查询订单,微信已经回调过接口 数据库状态已改变,将状态返回给前端"); } } }