package org.nutz.weixin.util; import org.nutz.lang.Lang; import java.util.*; /** * Created by wizzer on 2017/3/23. */ public class WxPaySign { /** * 签名算法 * * @param key * @param params * @return */ public static String createSign(String key, Map<String, Object> params) { SortedMap<Object, Object> parameters = new TreeMap<Object, Object>(); Set es = params.entrySet(); Iterator it = es.iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); String k = (String) entry.getKey(); Object v = entry.getValue(); parameters.put(k, v); } StringBuffer sb = new StringBuffer(); Set es2 = parameters.entrySet();//accsii升序排序 Iterator it2 = es2.iterator(); while (it2.hasNext()) { Map.Entry entry = (Map.Entry) it2.next(); String k = (String) entry.getKey(); Object v = entry.getValue(); if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) { sb.append(k + "=" + v + "&"); } } sb.append("key=" + key); String sign = Lang.md5(sb.toString()).toUpperCase(); return sign; } }