一、开发流程
1.应用获取
联系销售或者实施获取应用appKey和appSecret
2.访问流程
接口地址访问前缀:https://api.xinrenxinshi.com
- 每次访问接口时,需携带公共参数:
sign:签名信息(详见安全说明和签名计算)
timestamp:时间戳(精确到毫秒,5分钟内有效)
appKey:应用appKey
3.安全说明
为防止请求数据被恶意篡改,每次请求业务接口时,需对请求参数进行签名计算,薪人薪事开放平台会对签名进行比对,比对通过才能完成业务处理。
4.签名计算
4.1、将请求参数键值对列表,按照字典排序(单个键值对无需排序)
4.2、将排序后的键值对列表,通过连接符"&"连接(单个键值对无需连接)
4.3、将连接后的字符串,按照HmacSHA1算法计算签名;其中,算法密钥为appSecret
4.4、算法计算出来的字符串为签名值。
特殊说明:
签名值可能包含被http请求自动转义的字符,所以,需要对签名值进行URLEncoding处理之后才能请求。
键值对格式:参数名=参数值。例如:接口参数employeeId对应传值为12345,键值对则为:employeeId=12345。
样例:
签名内容:hello
签名密钥:123456
签名结果:NYSQUfYBHG0EZ6pU+r+Iw4CvPIQ=
二、 签名算法java版demo
/**
* 薪人薪事消息签名计算
*
* @param content 签名明文
* @param key 应用密钥
* @return 签名信息
* @throws Exception
*/
public static String hmacSha1Encrypt(String content, String key) throws Exception {
byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
SecretKeySpec localSecretKeySpec = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac localMac = Mac.getInstance("HmacSHA1");
localMac.init(localSecretKeySpec);
byte[] contentBytes = content.getBytes(StandardCharsets.UTF_8);
localMac.update(contentBytes);
return Base64.encodeBase64String(localMac.doFinal());
}