一、前置条件
注意:参与签名的数据需要和使用该签名的接口中的请求参数保持一致。
| 参数名 | 说明 | 来源 |
| appId | 业务流程唯一标识 | 参考 获取 WBappid 指引在意愿核身控制台内申请 |
| userId | 用户唯一标识 | 合作方自行分配,需跟用户绑定,32位以内,不包含特殊字符 |
| version | 参数值为:1.0.0 | – |
| ticket | 合作伙伴服务端获取的 ticket,注意是 SIGN 类型 | 获取方式见 获取 SIGN ticket |
| nonce | 必须是 32 位随机数 | 合作方自行生成 |
二、基本步骤
1. 生成一个 32 位的随机字符串 nonce(其为字母和数字,登录时也要用到)。
2. 将 appId、userId、version 连同 ticket、nonce 共五个参数的值进行字典序排序。
3. 将排序后的所有参数字符串拼接成一个字符串。
4. 将排序后的字符串进行 SHA1 编码,编码后的 40 位字符串作为签名(sign)。
注意:签名算法可参考 签名算法说明。
三、参考示例
请求参数:
| 参数名 | 参数值 |
| appId | IDAXXXXX |
| userId | userID19959248596551 |
| nonce | kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T |
| version | 1.0.0 |
| ticket | XO99Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS |
字典排序后的参数为:
[1.0.0,IDAXXXXX,XO99Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS, kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T, userID19959248596551]
拼接后的字符串为:
1.0.0IDAXXXXXXO99Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMSkHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7TuserID19959248596551
计算 SHA1 得到签名:
D7606F1741DDCF90757DA924EDCF152A200AC7F0
该字串就是最终生成的签名(40 位),不区分大小写。
四、合作方后台上传信息
请求 URL:https://kyc1.qcloud.com/api/server/getWillFaceId?orderNo=xxx
注意:为方便查询耗时,该请求 URL 后面请拼接 orderNo 订单号参数。
请求方法:POST 报文格式:Content-Type: application/jjson 请求参数:
| 参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
| appId | 业务流程唯一标识,即 appid,可参考 获取 WBappid 指引在意愿核身控制台内申请 | String | 8 | 是 |
| orderNo | 订单号,由合作方上传,字母/数字组成的字符串,每次唯一,不能超过 32 位 | String | 不能超过 32 位 | 是 |
| version | 默认参数值为:1.0.0 | String | 20 | 是 |
| sign | 签名:使用上面生成的签名 | String | 40 | 是 |
| nonce | 随机数 | String | 32 | 是 |
| name | 姓名 | String | – | 使用权威源比对时:姓名+证件号,必须输入使用自带源比对时:姓名+证件号,可不输入 |
| idNo | 证件号码 | String | – | 使用权威源比对时:姓名+证件号,必须输入使用自带源比对时:姓名+证件号,可不输入 |
| userId | 用户 ID ,用户的唯一标识(不能带有特殊字符),需要跟生成签名的 userId 保持一致 | String | 不能超过 32 位 | 是 |
| sourcePhotoStr | 比对源照片,注意:原始图片不能超过500k,且必须为 JPG 或 PNG、BMP 格式参数有值:使用合作伙伴提供的比对源照片进行比对,必须注意是正脸可信照片,照片质量由合作方保证参数为空 :根据身份证号 + 姓名使用权威数据源比对 | BASE64String | 1048576 | 否,非必填请使用标准的图片转 base64方法,base64编码不可包含换行符,不需要加前缀 |
| sourcePhotoType | 比对源照片类型参数值为1 时是:水纹正脸照参数值为 2 时是:高清正脸照重要提示:照片上无水波纹的为高清照,请勿传错,否则影响比对准确率。如有疑问,请 联系我们 | String | 1 | 否,提供比对源照片需要传 |
| liveService | 应用模式意愿核身默认上传 2 | String | 32 | 是 |
| liveInterType | 参数值为1时,表示仅使用实时检测模式,不兼容的情况下回调错误码3005参数值为0时,表示优先使用实时检测模式,不兼容情况自动降级为视频录制模式不传或传入为空,默认为仅使用强制实时检测模式 | String | 32 | 否 |
| willType | 意愿核身类型产品服务类型为“2”时,需要填写参数。配置参数:0:问答模式1:播报模式2:点头模式默认配置为0 | String | 32 | 否 |
| willLanguage | 意愿核身语言产品服务类型为“2”时,需要填写。参数配置:0-中文普通话默认配置为0 | String | 32 | 否 |
| willContentList | 意愿核身过程中播报文本/问题、用户朗读/回答的文本,当前支持一个播报文本+回答文本 | List | – | 是 |
| willContentList.id | 从下标0开始,问答模式下支持多轮问答,最大支持 5 轮 | String | 32 | 是 |
| willContentList.question | 系统播报问题文本/问题长度为250个字以内示例:“ 你好,为确保你本人操作,此次签约全程录音录像。请问你本次业务是本人自愿办理吗?请回答:我确认 ”注意:多轮问答的总字数之和需要小于或等于500字。 | String | 32 | 是 |
| willContentList.answer | 用户朗读/回答的文本,用于识别用户朗读/回答的语音与文本是否一致。长度为10个字以内支持多个文本作为识别内容,文本之间用"|" 分割。示例:我确认 | String | 32 | 是 |
| speed | 播报问题文字语速:默认为1.0倍速"-1"代表0.8倍,"0"代表1.0倍,"1"代表1.2倍,"1.5"代表1.35倍,"2"代表1.5倍 | string | 32 | 否 |
| willMidAnswer | liveInterType=0 时为必填项,用于意愿降级模式用户回答提示语,请保持与播报内容让用户回答的内容一致 | string | 32 | 否 |
| url | H5 人脸核身完成后回调的第三方 URL,需要第三方提供完整 URL 且做 URL Encode。完整 URL Encode 示例:原 URL(https://cloud.tencent.com) Encode 后: (https%3a%2f%2fcloud.tencent.com) | String | – | 是 |
| resultType | 是否显示结果页面,参数值为“1”时直接跳转到 url 回调地址,null 或其他值跳转提供的结果页面 | String | – | 否,非必填 |
| from | browser :表示在浏览器启动刷脸 app :表示在 app 里启动刷脸默认值为 app | String | – | 是 |
| redirectType | 跳转模式,参数值为“1”时,刷脸页面使用 replace 方式跳转,不在浏览器 history 中留下记录;不传或其他值则正常跳转 | String | – | 否,非必填 |
五、响应
响应参数:
| 参数 | 类型 | 说明 |
| code | String | 0:成功,非0:失败详情请参见 SaaS 服务错误码 |
| msg | String | 请求结果描述 |
| bizSeqNo | String | 请求业务流水号 |
| orderNo | String | 订单编号 |
| faceId | String | 此次唯一标识,调用时传入 |
| optimalDomain | String | 启动 H5 意愿核身步骤中调用 login 接口使用的域名 |
响应示例:
{ "code": 0, "msg": "成功", "result": { "bizSeqNo":"业务流水号", "orderNo":"合作方订单号","faceId":"cc1184c3995c71a731357f9812aab988", "optimalDomain":"kyc1.qcloud.com" }}
注意:说明:
注意:success:false 无意义,合作伙伴可忽略,无需处理。
注意:faceId 有效期为5分钟,每次进行人脸核身都需要重新获取。