zoukankan      html  css  js  c++  java
  • 微信查询订单

    直接贴代码 逻辑很简单 一些小接口没有 查询另外一篇博客: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("查询订单,微信已经回调过接口 数据库状态已改变,将状态返回给前端");
                    }
                }
            }
  • 相关阅读:
    存在主义危机
    噪声干扰
    Jupiter 2 Modem State Codes
    广域网优化协议欺骗
    RF / IF 信号
    意识清晰九度
    m3u8downloader
    JS禁用浏览器退格键
    Ruby on rails开发从头来(五十一) ActiveRecord基础(并发处理)
    来自Rails世界的项目管理工具Redmine
  • 原文地址:https://www.cnblogs.com/yi1036943655/p/10979803.html
Copyright © 2011-2022 走看看