启动 H5 人脸核身

最近更新时间:2019-08-07 14:47:24

前置条件

  • 合作方如果使用 App 内调起 H5 人脸核身,需要 App 平台的 webkit/blink 等组件支持调用摄像头录视频,才能正常使用人脸核身功能。
  • 请合作方确保 NONCE ticket 已经正常获取,获取方式请参见 NONCE ticket 获取
  • App 内调用 H5 人脸核身或者短信链接调用 H5 人脸核身等场景,若当前设备无法正常调用摄像头进行视频录制,前端将返回特定的错误码告知合作方,合作方获得错误码后,可选择用备用方案核身处理,返回码如下:
返回码 返回信息 处理措施
3001 该浏览器不支持视频录制 请使用其它验证方案

生成签名

准备步骤

  • 合作方为人脸核身服务生成签名,需要具有下表中的参数:
参数 说明 来源
wbappid 请添加小助手微信 faceid001,进行线下对接获取 腾讯云线下对接分配
orderNo 订单号,本次人脸核身合作伙伴上送的订单号,唯一标识 合作方自行分配
userId 用户 ID,用户的唯一标识(不要带有特殊字符) 合作方自行分配(与接口中使用的 userId 保持一致)
version 参数值为:1.0.0 -
h5faceId h5/geth5faceid 接口返回的唯一标识 -
api ticket 合作伙伴服务端缓存的 tikcet,注意是 NONCE 类型 获取方式请参见 NONCE ticket 获取(所用的 userId 与接口里定义的 userId 参数值保持一致)
nonce 随机数:32位随机串(字母+数字组成的随机数) 合作方自行生成(与接口中定义的随机数保持一致)

注意:

参与签名的数据需要和使用该签名的接口中的请求参数保持一致。

基本步骤

  1. 生成一个32位的随机字符串(字母和数字)nonce(接口请求时也要用到)。
  2. 将 webankAppId、userId、orderNo、version、h5faceId、ticket、nonce 共7个参数的值进行字典序排序。
  3. 将排序后的所有参数字符串拼接成一个字符串。
  4. 将排序后的字符串进行 SHA1 编码,编码后的40位字符串作为签名(sign)。

注意:

签名算法可参考 签名算法说明

参考示例

  • 请求参数:
    参数参数值
    webankAppIdAppId001
    userIduserID19959248596551
    noncekHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T
    version1.0.0
    h5faceIdbwiwe1457895464
    orderNoaabc1457895464
    ticketzxc9Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS
  • 字典排序后的参数为:
    [1.0.0, aabc1457895464, appId001, bwiwe1457895464, kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T, userID19959248596551, zxc9Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS]
  • 拼接后的字符串为:
    1.0.0aabc1457895464appId001bwiwe1457895464kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7TuserID19959248596551zxc9Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS
  • 计算 SHA1 得到签名:
    该字符串就是最终生成的签名(40位),不区分大小写。
    4E9DFABF938BF37BDB7A7DC25CCA1233D12D986B

启动 H5 人脸核身

合作方公众号上送 h5faceId 以及 sign,后台校验 sign 通过之后重定向到 H5 人脸核身。

  • 请求 URL:https://ida.webank.com/api/web/login
  • 请求方法:GET
  • 请求参数:
    参数说明类型长度(字节)是否必填
    webankAppId 腾讯云线下对接分配的 AppID String 腾讯云线下对接决定
    version 接口版本号,默认参数值:1.0.0 String 20
    nonce 随机数:32位随机串(字母+数字组成的随机数) String 32
    orderNo 订单号,由合作方上送,每次唯一,此信息为本次人脸核身上送的信息,不能超过32位 String 32
    h5faceId h5/geth5faceid 接口返回的唯一标识 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 -
    userId 用户 ID,用户的唯一标识(不要带有特殊字符) String -
    sign 签名:使用上文 生成的签名 String 40
    from
    • browser:表示在浏览器启动刷脸
    • App:表示在 App 里启动刷脸,默认值为 App
    String 40
    redirectType 跳转模式,参数值为“1”时,刷脸页面使用 replace 方式跳转,不在浏览器 history 中留下记录;不传或其他值则正常跳转 String -