微信原生分帳默認的比例是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 ""; }