# 实人认证时间戳/数字证书服务API

在验证用户身份信息(身份证号、姓名、人像)通过后签发具有法律效力的第三方可信时间戳/数字证书

# 一、公共参数

# 二、请求参数(请求方式为post)

请求参数以表单形式提交,Content-Type值为: application/x-www-form-urlencoded;charset=utf-8

名称 类型 是否必须 描述
realname String 身份证姓名,中文;参数支持数据加密,详情参照加解密方法说明
idcard String 身份证号码,18位;参数支持数据加密,详情参照加解密方法说明
image String 人脸照片base64位字符串,图片大小1024KB以内,2KB以上;参数支持数据加密,详情参照加解密方法说明
control String json字符串 如 {"quality_control":"NORMAL"} .quality_control(照片质量控制)
issueType String 签发类型 默认evc,tsp 时间戳, evc 短效证书
digest String 摘要值,SM3算法,tsp 时间戳证书时必传
event String 事件描述,evc 短效证书时设置
async String 是否开启异步签发,默认 false 为同步(将会影响性能)
  • 字段解释
control 字段 类型 描述
quality_control String 照片质量控制 等级:NONE(不进行控制) LOW(较低的要求) NORMAL(一般的要求,默认) HIGH(较高的要求)

请求示例:

http或https://api.spiderid.cn/api/router/rest?
<[公共请求参数]>

realname=XXX&idcard=XXX&image=XXX...

# 三、响应参数

data结果信息 类型 描述
valid Boolean true比对成功(该字段已被废弃)
message String 描述
incorrect Integer 返回码
scoreMsg String 分数建议
score Double incorrect为100时,才有该字段,两张照片的相似度(0到1),值越大相似度越高
score2 Double incorrect为100,两张照片的相似度(0到1),值越大相似度越高
score3 Double incorrect为100,两张照片的相似度(0到1),值越大相似度越高,推荐使用此字段
certificate String 证书,签发类型 evc 时返回
signature String 证书签名结果 base64编码 ,签发类型 evc 时并且digest不为空返回
trustedtimestamp String 时间戳,签发类型 tsp 时返回
  • score 属性介绍:
判断说明 score score2 score3
系统判断为不同人 score < 0.4 score < 0.40 score3 < 0.6
不能确定是否为同一人 0.40 ≤ score < 0.45 0.40 ≤ score2 < 0.60 0.60 ≤ score3 < 0.70
系统判断同一人 score >= 0.45 score2 ≥ 0.60 score3 ≥ 0.70

错误接受率 0.01%,阈值比对分数 0.7
注:错误接受率,又称误识率,即把某人误识为其他人的概率。

# 四、sdk用户注意事项

sdk版本大于等于1.15.0,增加响应参数score2,score属性区间改变为score2的区间,具体属性区间见参数描述

// 代码修改示例: score 分数判定改完 0.6
        IdcardDetectionFaceRequest req = new IdcardDetectionFaceRequest();
        // ...
        IdcardDetectionFaceResponse response = apiClient.execute(req);
        if (response.isSuccess() && null != response.getData()) {
            IdcardDetectionFaceResponse.Result data = response.getData();
            // incorrect 等于 100,比对成功,后续判断分数是否为同一人
            if (data.getIncorrect() == 100) {
                // sdk 版本 1.15.0 前(不包含1.15.0)
//                    if (data.getScore() >= 0.45) {
//                        // todo 系统判断为一人
//                    }

                // sdk 版本 1.15.0及以上, score 与score2一致,变更为0.6以上为同一人
                if (data.getScore() >= 0.6) {
                    // todo 系统判断为一人
                }
            }
        }

# 五、成功示例

JSON示例

{
  "code": 0,
  "requestId": "d022123ca86945fbb6562a8c90a416f1",
  "data": {
    "valid": true,
    "scoreMsg": "系统判断为同一人",
    "score": 0.81,
    "score2": 0.81,
    "incorrect": 100,
    "trustedtimestamp": "Mz...",
    "message":"比对成功"
  },
  "message": "success"
}

# 六、失败示例

JSON示例

{
  "code": 0,
  "requestId": "dsd24...",
  "data": {
      "message": '库中无此号' ,
      "incorrect": 102 ,
      "valid": false
  },
  "message": "success"
}

# 七、返回码说明(incorrect)

返回码 描述 是否收费
100 比对成功
101 身份证号码姓名不一致
102 库中无此号
103 身份核验成功,数据非法
104 数据非法
106 身份核验成功,人脸识别系统异常
107 照片质量不合格
108 上传图片文件过大
109 身份核验成功,库中无照片
110 身份核验成功,特征提取失败
111 身份核验成功,检测到多于一张人脸
112 身份核验成功,图片不合法
113 人像比对服务异常

103 身份核验成功,数据非法

核验中心已经进行了身份核验(姓名身份证号码一致),核验中心返回的错误:除库中无照片(109),特征提取失败(110),检测到多于一张人脸(111),人脸识别系统异常(106),图片不合法(112)以外的情况。

104 数据非法

核验中心未进行身份核验前图片校验,核验中心返回的错误:除照片质量不合格(107),上传图片文件过大(108),人像比对服务异常(113)以外的情况。

103,104区别

103证件号码一致,照片比对时报错;104未进行证件号校验,数据检验报错。

104,107区别

107检测到的核验中心错误;104未检测到的核验中心错误。

# SDK 请求示例

        //提供的url
        String url = "http://api.spiderid.cn/api/router/rest";

        //您的appKey
        String appkey = "XXX";

        //您的appSecret
        String secretKey = "XXX";

        //身份证姓名,注意不要有空格
        String realname = "XXX";

        //身份证号码是18位的,最后一位如果是大写X转换为x,注意不要有空格
        String idcard = "XXX";

        //图片转换成base64位字符串
        String image = null;

        //签发类型 默认evc,tsp 时间戳, evc 短效证书
        String issueType = "evc";

        try {
            image = Base64.encodeBase64String(FileUtils.readFileToByteArray(new File("D:/scb_photo.jpg")));
        } catch (IOException e) {
            e.printStackTrace();
        }

        //1.默认客户端
        ApiClient apiClient = new DefaultApiClient(url, appkey, secretKey);

        //2.调用出错自动重试客户端
        //AutoRetryApiClient apiClient = new AutoRetryApiClient(url, appkey, secretKey);

        IdcardDetectionFaceRequest req = new IdcardDetectionFaceRequest();

        req.setRealname(realname);

        req.setIdcard(idcard);

        req.setImage(image);

        //true 开启异步 false 关闭异步(默认)
        req.setAsync(false);

        //非必填参数,质量控制
        req.setQualityControl(QualityControl.NORMAL);

        // 配置此参数时,会对请求参数中的realname、idcard、image做加密
        //req.setEncMethod(EncryptMethod.SM4);

        try {

            IdcardDetectionFaceResponse response = apiClient.execute(req);

            //后续业务处理

        } catch (ApiException e) {

            e.printStackTrace();

        }
最后更新于: 1/15/2024, 1:07:47 PM