一、获取授权Token(authToken)
`注意:authToken有效期为30分钟,每个用户需单独获取,不能共用
1.接口地址和说明
2.接口请求参数
参数名 | 类型 | 参数描述 | 是否必填 | 说明 |
---|
appKey | String | 应用的APPID | 是 | 创蓝云智平台appId |
appSecret | String | 应用的appKey | 是 | 创蓝云智平台appKey |
did | String | 随机串 | 是 | 客户自己生成随机码长度【0~32】 |
3.请求示例
{
"appKey": "X6IfC4BO",
"appSecret": "397T7Nn9",
"did": "1375369787324108800"
}
4.接口响应内容
响应body数据为JSON格式。
字段名 | 类型 | 参数描述 | 说明 |
---|
code | String | 响应代码 | 000000表示成功,其他代码都为失败,详情参考附录。 |
message | String | 响应描述 | 响应代码描述 |
data | Object | 数据内容 | |
data >authToken | String | 认证令牌 | authToken有效期为30分钟,每个用户需单独获取,不能共用 |
5.接口响应示例
{
"code": "000000",
"message": "成功",
"data": {
"authToken": "1CFD08D67E724845A54F5AE2C83D0A6A"
}
}
一、人像比对(核身)
1.接口地址和说明
2.接口请求参数
参数名 | 类型 | 参数描述 | 是否必填 | 说明 |
---|
app_key | String | 应用的APPID | 是 | 创蓝云智平台appId |
auth_token | String | 认证令牌authToken | 是 | 通过获取授权Token接口获取 |
id_card_no | String | 身份证号 | 是 | 身份证号需经过RSA加密,请用公钥加密,公钥请向运营人员申请 |
id_card_name | String | 身份证姓名 | 是 | 身份证姓名需经过RSA加密,请用公钥加密,公钥请向运营人员申请 |
3.请求示例
{
"app_key": "53hWp7sb",
"auth_token": "56552C3EBB724C69BA3BC2263833AB12",
"id_card_no": "m1hUHWlhkwUv8LnZDfU8SBTyqDHiteFY9Mf7lRhe+/BIpQvBp12Mrlk+mCNx5xxifVOF6AbQLxaJwLteaX95/NB1FI7wlj4xLloS7ygcNpTUTjb7WRQe3a9uNpLK81+VUlktF4UWSqrquQVECcmtZ+xRcygnQUoIo8HBA9kPBsg=",
"id_card_name": "cOSMk1nH8GsiBIN05YD9vW8JaHSx9f8Eqvj4NeW6BBY987EUNc0pVa2cYbDYxw3PnZdWPnGumI4vgmYBMxSCDrZn0R49Y+fWJKuNSYW5MMUIO7Pt64c9/f35y5TxtUZeeMLHW4EPUgsBeSzvaS0JX/JYqdn5JSndSGSwjuPFeqI="
}
身份证号码、姓名加密示例
private static final String ALGORITHM = "RSA";
private static final String CIPHER_EN = "RSA";
private static final int MAX_ENCRYPT_BLOCK = 117;
public static String encryptByPublicKey(String fromStr, String publicKey) throws Exception {
return new String(Base64.getEncoder().encode(encryptByPublicKey(fromStr.getBytes(), publicKey)));
}
public static byte[] encryptByPublicKey(byte[] data, String publicKey) throws Exception {
// 得到公钥
byte[] keyBytes = Base64.getDecoder().decode(publicKey.getBytes());
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
Key key = keyFactory.generatePublic(x509EncodedKeySpec);
// 加密数据,分段加密
Cipher cipher = Cipher.getInstance(CIPHER_EN);
cipher.init(Cipher.ENCRYPT_MODE, key);
int inputLength = data.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offset = 0;
byte[] cache;
int i = 0;
while (inputLength - offset > 0) {
if (inputLength - offset > MAX_ENCRYPT_BLOCK) {
cache = cipher.doFinal(data, offset, MAX_ENCRYPT_BLOCK);
} else {
cache = cipher.doFinal(data, offset, inputLength - offset);
}
out.write(cache, 0, cache.length);
i++;
offset = i * MAX_ENCRYPT_BLOCK;
}
byte[] encryptedData = out.toByteArray();
out.close();
return encryptedData;
}
4.接口响应内容
响应body数据为JSON格式。
字段名 | 类型 | 参数描述 | 说明 |
---|
code | String | 响应代码 | 000000表示成功,其他代码都为失败,详情参考附录。 |
message | String | 响应描述 | 响应代码描述 |
data | Object | 数据内容 | |
data >match | String | 比对结果 | pass:通过,fail:不通过 |
data >score | String | 人像分值 | 范围[0,100] |
data >desc | String | 比对结果描述 | 比对结果描述 |
data >image | String | 人像图片 | base64编码后的人像图片信息。需要注意的是,该值仅在人像对比成功后返回。 |
5.接口响应示例
{
"code": "000000",
"message": "成功",
"data": {
"match": "pass",
"score": "98",
"desc": "比对成功",
"image": "/9j/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAPABDgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQ"
}
}
没有更多了