/** 
 
  * 微信支付签名算法sign 
 
  * @param characterEncoding 
 
  * @param parameters 
 
  * @return 
 
  */ 
 
  public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters){ 
 
  StringBuffer sb = new StringBuffer(); 
 
  Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序) 
 
  Iterator it = es.iterator(); 
 
  while(it.hasNext()) { 
 
  Map.Entry entry = (Map.Entry)it.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=" + WEIXIN_KEY); 
 
  System.out.println("签名字符串:"+sb.toString()); 
 
  System.out.println("签名MD5未变大写:" + MD5Util.MD5Encode(sb.toString(), characterEncoding)); 
 
  String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase(); 
 
  return sign; 
 
  } 
					