docs: public static String generateSign(Map<String, String> map,String sign_type,String paternerKey){
  		Map<String, String> tmap = MapUtil.order(map);
  		if(tmap.containsKey("sign")){
  			tmap.remove("sign");
  		}
  		String str = MapUtil.mapJoin(tmap, false, false);
  		if(sign_type == null){
  			sign_type = tmap.get("sign_type");
  		}
  		if("HMAC-SHA256".equalsIgnoreCase(sign_type)){
  			try {
  				  Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
  				  SecretKeySpec secret_key = new SecretKeySpec(paternerKey.getBytes("UTF-8"), "HmacSHA256");
  				  sha256_HMAC.init(secret_key);
  				  return Hex.encodeHexString(sha256_HMAC.doFinal((str+"&key="+paternerKey).getBytes("UTF-8"))).toUpperCase();
  			} catch (Exception e) {
  				logger.error("", e);
  			}
  			return null;
  		}else{//default MD5
  			return DigestUtils.md5Hex(str+"&key="+paternerKey).toUpperCase();
  		}
  	}