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