微信分帳-簽名(HMAC-SHA256)

微信原生分帳默認的比例是30%,這個值能夠在申請商戶的時候設置,以後貌似不支持修改。



下面是分帳用到的HMAC-SHA256 簽名

public static String getSignHMAC(Map<String, Object> map, String key) {
    ArrayList<String> list = new ArrayList<String>();
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        if (entry.getValue() != "") {
            list.add(entry.getKey() + "=" + entry.getValue() + "&");
        }
    }
    int size = list.size();
    String[] arrayToSort = list.toArray(new String[size]);
    Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < size; i++) {
        sb.append(arrayToSort[i]);
    }
    String result = sb.toString();
    result += "key=" + key;

    result = HMACEncode(result, key.toUpperCase();
    return result;
}
public static String HMACEncode(String origin, String key)  {
    try {
        Mac mac= Mac.getInstance("HmacSHA256");
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "HmacSHA256");
        mac.init(secretKey);
        return byteArrayToHexString(mac.doFinal(origin.getBytes("utf-8"))).toUpperCase();
    }catch (Exception e){
        e.printStackTrace();
        Log.logger.error("HMACEncode發生異常-message:" + e.getMessage());
    }
    return "";
}
相關文章
相關標籤/搜索