docs: public static String createSign(Map<String, String> packageParams, String signKey) {
          SortedMap<String, String> sortedMap = new TreeMap<String, String>();
          sortedMap.putAll(packageParams);
  
          List<String> keys = new ArrayList<String>(packageParams.keySet());
          Collections.sort(keys);
  
  
          StringBuffer toSign = new StringBuffer();
          for (String key : keys) {
              String value = packageParams.get(key);
              if (null != value && !"".equals(value) && !"sign".equals(key)
                      && !"key".equals(key)) {
                  toSign.append(key + "=" + value + "&");
              }
          }
          toSign.append("key=" + signKey);
          String sign = DigestUtils.md5Hex(toSign.toString())
                  .toUpperCase();
          return sign;
      }