支付寶網站即時支付開發,MD5加簽名規則處理代碼展現

1、若是傳入進來的Object對象,最後生成制定格式的字符換 textjava

list拼接成字符串,map中的全部元素,按照「參數=參數值」的模式用「&」字符拼接成字符串,list的元素之間用「|」字符拼接
private static String getSignText(Object obj) {
    if (obj instanceof Collection) {
        return getListSignText((Collection<Object>) obj);
    } else if (obj instanceof Map) {
        return getMapSignText((Map) obj);
    } else if (obj instanceof Number) {
        return obj.toString();
    } else if (obj != null) {
        return obj.toString();
    } else {
        return "";
    }
}

 對list對象繼續進行遞歸處理:app

    private static String getListSignText(Collection list) {
        StringBuffer paramBuffer = new StringBuffer();
        for (Object obj : list) {
            paramBuffer.append(getSignText(obj)).append("|");
        }
        return paramBuffer.substring(0, paramBuffer.length() - 1);
    }

  最終對map對象的處理:加密

private static String getMapSignText(Map map) {
        String[] keys = (String[]) map.keySet().toArray(new String[0]);
        // 1. 參數名按照ASCII碼錶升序排序
        Arrays.sort(keys);
        // 2. 按照排序拼接參數名與參數值
        StringBuffer paramBuffer = new StringBuffer();
        for (String key : keys) {
            paramBuffer.append(key).append("=").append(getSignText(map.get(key)) == null ? "" : getSignText(map.get(key))).append("&");
        }
        return paramBuffer.substring(0, paramBuffer.length() - 1);
    }

  

2、對制定格式的 text  進行 MD5 加密:
DigestUtils.md5Hex(text.getBytes(charsetName));
相關文章
相關標籤/搜索