活体检测

  功能

身份信息认证接口,用于对身份证信息进行严格的认证,需要用户上传一段带口令的视频--认证过程分为两个步骤:

1.       获取认证的口令和流程单号。

2.       进行身份认证:根据提供的姓名与身份证号码与公安部数据对比,获取对应的身份证上的图片,然后再与上传的视频做对比,判断是否一致。

        或者进行身份认证+证书申请

    获取活体检测口令与流程单号

     请求说明

l  请求方式:GET

l  请求URL:请求地址/core/api/get_random_number?token=xxxx

     请求参数

参数名

类型

可空

说明

     返回数据

返回值是JSON格式的字符串数据。返回格式如:

参数名

类型

可空

说明

success

boolean

核验结果

msg

String

结果描叙

code

String

结果编号

orderno

String

流程单号,用于标志一次认证流程

obj

Object

random_number:用于进行活体检测的口令

    活体检测

根据提供的姓名与身份证号码与公安部数据对比,获取对应的身份证上的图片,然后再与上传的视频做对比,判断是否一致。

备注:身份信息与视频对象一致

     请求说明

l  请求方式:POST

l  请求URL:请求地址/core/api/livingbody_verify?token=xxxx

     请求参数

参数名

类型

可空

说明

idcard_name

String

姓名(与上传视频的身份一致)

idcard_number

String

身份证号码(与上传的视频的身份一致)

orderno

String

流程单号(从第一个步骤返回结果中获取,其它无效)

video

File

需用户上传拍摄的人脸视频,拍摄的过程中需要把第一个步骤中返回口令,用普通话读出来,视频要求为ffmpeg所支持的格式及码率,视频时长为3~6秒,视频大小不能超过20M

return_image_best

String

此参数为可选参数,决定了是否返回从视频中截取的最佳质量图像:

0(默认):不需要图像

1:需要返回最佳质量图 (仅当API调用成功后才返回)

    返回数据

返回值是JSON格式的字符串数据。返回格式如:

参数名

类型

可空

说明

success

boolean

核验结果

msg

String

结果描叙

code

String

结果编号

orderno

String

流程单号,用于标志一次认证流程

obj

String

该字段返回身份比对的详细(JSON):

Obj对象包含如下字段:

image_best

本字段仅调用成功才返回,返回为将会用于人脸比对的视频中的最佳质量的人脸照片。

return_image_best字段配置为0,或者没有配置,则不返回。

return_image_best字段配置为1,以Base64字符串返回,图像格式为

JPEG。在异常情况下,该字段有可能返回null

"confidence":比对结果的置信度,Float类型,取值[0100],数字越大表示两张照片越可能是同一个人。

thresholds”:一组用于参考的置信度阈值,Object类型,包含三 四个字段,均为Float类型、取值[0100]:

1e-3”:误识率为千分之一的置信度阈值;

1e-4”:误识率为万分之一的置信度阈值;

1e-5”:误识率为十万分之一的置信度阈值;

1e-6”:误识率为百万分之一的置信度阈值。

请注意:阈值不是静态的,每次比对返回的阈值不保证相同,所以没有持久化保存阈值的必要,更不要将当前调用返回的confidence与之前调用返回的阈值比较。

关于阈值选择,以下建议仅供参考:

阈值选择主要参考两个因素:业务对安全的要求和对用户体验的要求。严格的阈值对应更高的安全度,但是比对通过率会下降,因此更容易出现用户比对多次才通过的情况,用户体验会有影响;较松的阈值带来一次通过率会提升,用户体验更好,但是出现非同一个人的概率会增大,安全性会有影响。请按业务需求偏好慎重选择。

1e-3”阈值是较松的阈值。如果confidence低于“1e-3”阈值,我们不建议认为是同一个人;如果仅高于“1e-3”阈值,勉强可以认为是同一个人。这个阈值主要针对对安全性相对要求较低的场景(比如在分项业务有独立密码保护的情况下刷脸登陆app),或者原则上安全性要求高、但在一个具体流程里如果发生安全事故后果不严重的场景(比如“转账”场景安全性要求高、但是当前转账的金额很小)。

1e-5”、“1e-6”阈值都是较严格的阈值,一般来说置信度大于“1e-5”阈值就可以相当明确是同一个人。我们建议使用“1e-5”到关键的、高安全级别业务场景中,比如大额度的借款或者转账。“1e-6”则更加严格,适用于对安全性要求比较极端的场景。

1e-4”阈值的严格程度介于“1e-3”阈值与“1e-5”阈值之间。

 活体检测+证书申请

根据提供的姓名与身份证号码与公安部数据对比,获取对应的身份证上的图片,然后再与上传的视频做对比,判断是否一致。认证一致后凭此身份信息申请个人证书

备注:身份信息与视频对象一致

     请求说明

l  请求方式:POST

l  请求URL:请求地址/core/api/livingbodyVerifyAndSupApplyPerson?token=xxxx

      请求参数

参数名

类型

可空

说明

orderno

String

流程单号(从第一个步骤返回结果中获取,其它无效)

video

File

需用户上传拍摄的人脸视频,拍摄的过程中需要把第一个步骤中返回口令,用普通话读出来,视频要求为ffmpeg所支持的格式及码率,视频时长为3~6秒,视频大小不能超过20M,视频信息对应客户的个人信息

authInfo

String

访问授权信息;JSON数据封装,格式范例:

{

"projectId":"801",

"locationId":"12",

"ip":"",

"certsn":"5F64183039B45A8D",

"authCode":"EFKEAKFafjkadf123"

}

各属性说明如下:

projectId:项目编号,必填。由CA运营商提供;

locationId:受理网点,必填。由CA运营商提供;

ip:暂时未空;

certsn:证书序列号,必填。由CA运营商提供;

authCode:客户授权码,必填。由CA运营商提供;

certApplyInfo

String

证书申请基本信息;JSON数据封装,格式范例:

{

"certType":" NATURAL ",

"certdn":" CN=自然人姓名,OU=自然人身份证号码后8,O=自然人姓名,L=杭州市,ST=浙江省,C=CN ",

"applyValidate":365,

"certValidate":365,

"email":"zhangjq@szca.com.cn"

}

各属性说明如下:

certType:证书类型;必填;取值如下:

BUSINESS        机构业务证书

EVALUATION             机构评标员证书

EXPERT              机构专家证书

NATURAL                  自然人证书

ORGAN          机构证书

PERSON                    机构个人证书

机构证书关联的是机构或公司信息,

机构个人证书  关联的是个人信息

certdn:证书主题;必填

applyValidate:证书申请服务期限;单位为天;必填

certValidate:证书申请有效期;单位为天;必填

email:邮箱地址;必填

注:申请个人证书或者自然人证书

businessInfo

String

业务信息;JSON数据封装,格式范例:

{

"chargeMethod":"FREE",

"isPrecord":"N",

"deliverMethod":"SELF"

}

各属性说明如下:

chargeMethod:收费方式;

planKeyFee:应收介质费用

planCertFee:应收证书费用

factKeyFee:实收介质费用

factCertFee:实收证书费用

planOpenFee:应收开户费

factOpenFee:实收开户费

deliverMethod:领取方式

postAddr:邮寄地址

expressId:快递单号

postCode:邮政编码

contacter::联系人

cntPhoneNo::联系电话

isPrecord::是否预登记

refId:参考标识

remitId::汇款单号

checkRemarks:核对时备注

以上参数正式环境中需由根据商务合同决定;

测试环境中按格式范例提供的即可;

personInfo

String

个人客户信息;JSON数据封装,格式范例:

{

"custName":"张三",

"sex":"M",

"idType":"SF",

"idNo":"431431198203055517",

"mobileNo":"13560767212",

"phoneNo":"075526588388",

"faxNo":"075586156366",

"company":"深圳市电子商务有限公司",

"companyCode":"123456789",

"address":"深圳市南山区软件园",

"zipCode":"518057",

"city":"深圳市",

"province":"广东省"

}

各属性说明如下:

custName:客户名称

sex:性别;

idType:证件类型

idNo:证件号码

mobileNo:手机号码

phoneNo:电话号码

faxNo:传真号码

company:单位名称

companyCode:公司机构代码

address:联系地址

zipCode:邮政编码

city:城市

province:省份

注意:取用户的姓名,身份证号码以及传入的视频做认证

keyType

String

证书类型;输入值可选范围为:RSA;SM2

selfExtResArr

String

自定义扩展(JSONArray):

[

{\"extId\":\"1.2.86.11.7.1.8\",

 \"extName\":\"xxx\"

 \"extValue\":\"xxx\"

 \"nullAble\":\"xxx\"

},

{\"extId\":\"1.2.86.11.7.1.8\",

 \"extName\":\"xxx\"

 \"extValue\":\"xxx\"

 \"nullAble\":\"xxx\"

}]

     返回数据

返回值是JSON格式的字符串数据。返回格式如:

返回结果

说明

{

    "success": true,

    "msg": "ok",

    "code": 0,

    "orderno": "e7bb301f2b164fb784fc54ae38cba540",

    "obj": {

        "applyid": "201907001",

        "endDate": "2020-07-10 18:31:52",

        "subject": "CN=张三201907,OU=431431198203055517,O=张三201907,L=杭州市,ST=浙江省,C=CN",

        "resultCode": 0,

        "startDate": "2019-07-11 18:31:52"

    }

}

obj: 业务返回结果;

applyId:证书业务单号;

subject:证书主题;

resultCode:申请返回结果;为0则申请成功;

其他编码则是业务异常,调用方需进行判断;

resultDesc:异常信息,resultCode不为0时回返回该字段

认证未通过,会返回具体原因,认证通过后自动申请证书