String sessionKey = jsonObject.getString("session_key");
String nonceStr = WXPayUtil.generateNonceStr();
String timeStamp = String.valueOf(System.currentTimeMillis()/1000);
String signature = null;
String str = this.sortStr(appId,groupId,timeStamp,nonceStr);
try {
byte[] keyBytes = Base64.getDecoder().decode(sessionKey);
Mac sha256Hmac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(keyBytes, "HmacSHA256");
sha256Hmac.init(secretKey);
byte[] signatureBytes = sha256Hmac.doFinal(str.getBytes(StandardCharsets.UTF_8));
signature = this.bytesToHex(signatureBytes);
} catch (Exception e) {
e.printStackTrace();
}
private String bytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte b : bytes) {
result.append(String.format("%02x", b));
}
return result.toString();
}
private String sortStr(String appId, String groupId, String timeStamp, String nonceStr) {
List<String> params = new ArrayList<>();
params.add(appId);
params.add(groupId);
params.add(nonceStr);
params.add(timeStamp);
Collections.sort(params);
return String.join("", params);
}
joinVoIPChat报错内容 {"errno": 4, "errCode": -1000, "errMsg": "joinVoIPChat:fail: -10088, -10, join room failed. errType: 4, errCode: -12020, errMsg: invalid signature, -1"}