微信接口处理工具类

package org.jeecg.common.util;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.lang.reflect.Field;
import java.util.*;

public class UrlParamUtil {

    /**
     * 将benn转成url参数
     * @param obj
     * @return
     */
    public static String bean2UrlParams(Object obj){
        Field[] fields = obj.getClass().getDeclaredFields();
        //按照name升序排序
        Arrays.sort(fields, new Comparator<Field>() {
            @Override
            public int compare(Field o1, Field o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });
        StringBuffer result = new StringBuffer(10);
        //拼接成url参数
        try {
            for(Field field:fields){
                field.setAccessible(true);
                if(field.get(obj) != null){
                    result.append(field.getName());
                    result.append("=");
                    result.append(field.get(obj).toString());
                    result.append("&");
                }
            }
        }catch (IllegalAccessException e){
            e.printStackTrace();
        }
        return result.substring(0, result.lastIndexOf("&"));
    }
    /**
     * 将url参数转换成map
     * @param param aa=11&bb=22&cc=33
     * @return
     */
    public static Map<String, Object> urlParams2Map(String param) {
        Map<String, Object> map = new HashMap<String, Object>(0);
        if (StringUtils.isBlank(param)) {
            return map;
        }
        String[] params = param.split("&");
        for (int i = 0; i < params.length; i++) {
            String[] p = params[i].split("=");
            if (p.length == 2) {
                map.put(p[0], p[1]);
            }
        }
        return map;
    }

    /**
     * 将map转换成url
     * @param map
     * @return
     */
    public static String map2UrlParams(Map<String, Object> map) {
        if (map == null) {
            return "";
        }
        TreeMap<String, Object> sort = new TreeMap(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
        sort.putAll(map);
        StringBuffer sb = new StringBuffer();
        for (Map.Entry<String, Object> entry : sort.entrySet()) {
            sb.append(entry.getKey() + "=" + entry.getValue());
            sb.append("&");
        }
        String s = sb.toString();
        if (s.endsWith("&")) {
            s = org.apache.commons.lang.StringUtils.substringBeforeLast(s, "&");
        }
        return s;
    }

    /**
     * 将map转换成xml,和字符串(发起扣款请求用)
     * @param map
     * @return
     */
    public static Map<String,String> map2XmlAndStr(TreeMap<String, Object> map) {
        if (map == null) {
            return null;
        }
        StringBuffer str = new StringBuffer();
        StringBuffer xml = new StringBuffer();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue().toString();
            str.append(key + "=" + value +"&");
            xml.append("<" + key + ">" + value + "</" + key + ">" );
        }
        String reStr = str.toString();
        Map<String,String> result = new HashMap<String, String>(){{
            put("str",reStr.substring(0,str.length()-1));
            put("xml",xml.toString());
        }};
        return result;
    }

    /**
     * 将treeMap转换成url
     * @param map
     * @return
     */
    public static String treeMap2UrlStr(TreeMap<String, Object> map) {
        if (map == null) {
            return "";
        }
        StringBuffer str = new StringBuffer();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            str.append(entry.getKey() + "=" + entry.getValue());
            str.append("&");
        }
        return str.toString().substring(0, str.length()-1);
    }

    /**
     * xml转treeMap
     * @param xml
     * @return
     */
    public static TreeMap<String,Object> xml2TreeMap(String xml) {
        TreeMap<String,Object> map = new TreeMap<>();
        Document doc = null;
        try {
            doc = DocumentHelper.parseText(xml); // 将字符串转为XML
            Element rootElt = doc.getRootElement(); // 获取根节点
            List<Element> list = rootElt.elements();//获取根节点下所有节点
            for (Element element : list) {  //遍历节点
                map.put(element.getName(), element.getText()); //节点的name为map的key,text为map的value
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }

    /**
     * 验证签名
     * @param key
     * @param map
     * @return
     */
    public static boolean proveSign(String key,TreeMap<String,Object> map){
        if (map == null) {
            return false;
        }
        StringBuffer str = new StringBuffer();
        String wxSign = "";
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            if (entry.getKey().equals("sign")){
                wxSign = entry.getValue().toString();
            }else {
                str.append(entry.getKey() + "=" + entry.getValue());
                str.append("&");
            }
        }
        str.append("key=" + key);
        String sign = MD5Util.MD5Encode(str.toString(),"UTF-8").toUpperCase();
        return sign.equals(wxSign);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值