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("查询订单,微信已经回调过接口 数据库状态已改变,将状态返回给前端");
                    }
                }
            }
  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/yi1036943655/p/10979803.html
Copyright © 2011-2022 走看看