实人认证提供APICloud插件,帮助您在App中实现实人认证以及场景风险识别等功能。本文介绍了APICloud客户端接入的操作方法。

前提条件

  • 您已在APICloud控制台上创建Native App类型的应用。
  • 您已开通实人认证服务。

使用限制

目前支持iOS客户端、Android客户端接入APICloud插件。该插件如果不能满足需求,请您自行开发模块或者在APICloud手机App模块Store中选择合适的模块。更多信息,请参见APICloud官方文档模块Store

该插件是免费的,但实人认证是收费的。关于实人认证的计费信息,请参见产品计费

操作步骤

  1. 下载APICloud插件,并解压到本地。
  2. 替换安全加密图片。
    1. 登录实人认证管理控制台
    2. 在左侧导航栏,单击接入设置
    3. 接入设置页面,单击获取认证SDK
    4. 认证SDK生成对话框中,单击上传应用,选择您的应用文件进行上传。
    5. 上传完毕后,单击下载认证SDK认证SDK生成
    6. 下载并解压文件,在解压的文件中获取对应客户端的图片并进行替换。
      • iOS:用yw_1222_146f.jpg图片替换实人认证模块包中RPFaceDetectPlugin>target目录下的yw_1222_146f.jpg图片。
        说明 在解压的文件中找到RPSDK.bundle文件,鼠标右键单击该文件,然后单击显示包内容,找到图片yw_1222_146f.jpg
      • Android:用yw_1222_146f.jpg图片替换实人认证模块包中RPFaceDetectRes>res_ RPFaceDetectRes>res>drawable目录下的yw_1222_146f.jpg图片。
        说明 解压rpsdk-xxx.aar压缩包,在drawable目录下找到加密图片yw_1222_146f.jpg
    7. 压缩替换好的APICloud插件,压缩包名称保持不变。
  3. 在APICloud控制台,上传实人认证APICloud模块。
    1. 登录APICloud控制台
    2. 在左侧导航栏,单击目标应用。
    3. 在目标应用页面的左侧导航栏,单击模块
    4. 模块页面,单击自定义模块页签。
    5. 自定义模块页签,输入有效的模块名称模块概要及版本号,选择并上传已下载的APICloud模块。
      模块名称建议填写RPFaceDetectPlugin上传模块
    6. 单击保存
      当自定义模块上传成功后,您可以在自定义模块页签的下方看到已上传的模块。
  4. 在APICloud控制台,将APICloud模块添加到您的应用中。
    自定义模块页签,单击已上传APICloud模块右上角的1图标,将APICloud模块添加到您的应用中。添加项目
    注意 压缩包中包含了您的加密图片,因为该图片是不可以泄露的,所以建议不要将实人认证模块发布到模块Store

    当您需要更新已上传的自定义模块时,您可以通过已上传自定义模块右上角的编辑图标,重新上传自定义模块包,上传后再单击保存

  5. 调用实人认证服务。
    在调用实人认证服务之前,您需要先获取VerifyToke。关于如何获取VerifyToke,请参见DescribeVerifyToken

    实人认证包含两种调用方式:

    • 方式一:Start(推荐)

      支持RPBasic、RPBioOnly、RPBioID、RPManual、FDBioOnly、FVBioOnly认证方案。该接口会以加载H5的方式显示页面,包含身份证件拍摄等其他步骤。

      说明 当您在控制台配置了引导页授权页结果页,您只能使用该方式接入实人认证。

      代码示例

      # 接口1 startWithVerifyToken
      # 参数:verifyToken。
      # 回调结果:ret。关于结果的详细说明,请参见错误码说明。
      
      var rpFaceDetectPlugin = api.require('RPFaceDetectPlugin');
      rpFaceDetectPlugin.startByH5({verifyToken: verifyToken}, function(ret, err) {
          switch (ret.state) {
              case -1: // 未完成认证。
                  api.toast({
                      msg: '未完成认证:' + 'state: ' + ret.state + ' errorCode: ' + ret.errorCode + ' message: ' + ret.message,
                      location: 'middle'
                  });
                  break;
              case 1: // 认证通过。
                  api.toast({
                      msg: '认证通过:' + 'state: ' + ret.state + ' errorCode: ' + ret.errorCode + ' message: ' + ret.message,
                      location: 'middle'
                  });
                  break;
              case 2: // 认证失败。
                  api.toast({
                      msg: '认证失败:' + 'state: ' + ret.state + ' errorCode: ' + ret.errorCode + ' message: ' + ret.message,
                      location: 'middle'
                  });
                  break;
          }
      });
    • 方式二:startByNative
      如果您选择的认证方案只包含活体检测步骤(例如,使用RPBioOnly、FDBioOnly、FVBioOnly方案),则可以使用该方式接入实人认证。
      说明 当您使用该方式接入实人认证,则不支持在控制台配置引导页授权页结果页

      代码示例

      # 接口2 startByNativeWithVerifyToken
      # 参数:verifyToken。
      # 回调结果:ret。关于结果的详细说明,请参见错误码说明。
      
      var rpFaceDetectPlugin = api.require('RPFaceDetectPlugin');
      rpFaceDetectPlugin.startByNative({verifyToken: verifyToken}, function(ret, err) {
          switch (ret.state) {
              case -1: // 未完成认证。
                  api.toast({
                      msg: '未完成认证:' + 'state: ' + ret.state + ' errorCode: ' + ret.errorCode + ' message: ' + ret.message,
                      location: 'middle'
                  });
                  break;
              case 1: // 认证通过。
                  api.toast({
                      msg: '认证通过:' + 'state: ' + ret.state + ' errorCode: ' + ret.errorCode + ' message: ' + ret.message,
                      location: 'middle'
                  });
                  break;
              case 2: // 认证失败。
                  api.toast({
                      msg: '认证失败:' + 'state: ' + ret.state + ' errorCode: ' + ret.errorCode + ' message: ' + ret.message,
                      location: 'middle'
                  });
                  break;
          }
      });

错误码说明

在实人认证completion的RPResult中可获取到认证状态和认证失败错误码。

State ErrorCode 说明
1 1 认证通过。
2 2~12 表示认证不通过,具体的原因可以查看服务端的查询认证结果(DescribeVerifyResult)接口文档中认证状态的说明。
-1 -1 未完成认证,原因:用户在认证过程中主动退出。
-2222 未完成认证,前置拦截。例如:重复调用、VC为空等。
-10 未完成认证,原因:设备问题。例如:设备无摄像头、无摄像头权限、摄像头初始化失败、当前手机不支持端活体算法等。
-20 未完成认证,原因:端活体算法异常。例如:算法初始化失败、算法检测失败等。
-30 未完成认证,原因:网络问题导致的异常。例如:网络连接错误、网络请求失败等,需要您检查网络并关闭代理。
-40 未完成认证,原因:SDK异常。例如:SDK初始化失败、SDK调用参数为空、活体检测被中断(如电话打断)等。
-50 未完成认证,原因:用户活体失败次数超过限制。
-60 未完成认证,原因:手机的本地时间和网络时间不同步。
-10000 未完成认证,原因:客户端发生未知错误。
3001 未完成认证,原因:认证Token无效或已过期。
3101 未完成认证,原因:用户姓名与身份证信息不一致。
3102 未完成认证,原因:身份证信息不存在。
3103 未完成认证,原因:身份证信息不合法。
3104 未完成认证,原因:认证已通过,重复提交。
3203 未完成认证,原因:设备不支持刷脸。
3204 未完成认证,原因:非本人操作。
3206 未完成认证,原因:非本人操作。
3208 未完成认证,原因:公安网没有留存身份证照片。