/** 
        
 
        
          * 微信支付簽名算法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; 
        
 
        
          } 
        
 
       