实人认证提供UniApp插件,帮助您在App中实现实人认证功能。您可通过实人认证的服务端认证初始化接口,获取唯一标识verifyToken,然后使用verifyToken唤起实人认证界面。本文介绍了UniApp客户端接入的操作方法。

接入UniApp插件

您可以参考以下步骤接入UniApp插件,或者参见DCloud官网文档接入UniApp插件。详细信息,请参见DCloud官网文档

  • 方式一:云打包(推荐)
    云打包可以解决离线包体积大小超限问题, uniapp离线打包时包体积超过40 MB需要额外收费,推荐使用这种方式进行集成。
    1. 打开实人认证插件包地址,单击右上角云打包集成云插件。
    2. 选择已集成的云插件。
      1. 打开需要集成实人认证的UniApp工程,在manifest.json文件下,单击App原生插件配置
      2. App原生插件配置区域,单击选择云端插件
      3. 云端插件选择对话框中,选择阿里实人认证官方插件选择云插件
    3. 获取安全加密图片。
      1. 登录实人认证管理控制台
      2. 在左侧导航栏,单击接入设置
      3. 接入设置页面,单击获取认证SDK
      4. 认证SDK生成对话框中,单击上传应用,选择您的应用文件进行上传。

        加密图片绑定应用的包名,您需要上传所使用的uniapp工程打的包,否则可能导致调用失败。

      5. 上传完毕后,单击下载认证SDK认证SDK生成

        iOS SDK下载完成后,在下载的文件中获取yw_1222_0769.jpg图片。Android SDK下载完成后,在下载的文件中获取yw_1222_0670.jpg图片。

    4. 配置离线图片资源。
      1. 打开需要集成实人认证的UniApp工程。
      2. nativePlugins目录下,新建RP-FaceDetectPlugin目录,参照如下目录放置Android、iOS的加密图片。目录
    5. 在菜单栏,选择发行 > 原生App-云打包,进行打包。
  • 方式二:离线打包(不推荐)

    由于uniapp工程会限制打包的体积,所以不推荐这种打包方式。

    1. 打开需要集成实人认证的UniApp工程。
    2. 下载UniApp插件包,解压到UniApp工程中的nativePlugins目录下。导入
    3. 获取安全加密图片。
      1. 登录实人认证管理控制台
      2. 在左侧导航栏,单击接入设置
      3. 接入设置页面,单击获取认证SDK
      4. 认证SDK生成对话框中,单击上传应用,选择您的应用文件进行上传。

        加密图片绑定应用的包名,您需要上传所使用的uniapp工程打的包,否则可能导致调用失败。

      5. 上传完毕后,单击下载认证SDK认证SDK生成

        iOS SDK下载完成后,在下载的文件中获取yw_1222_0769.jpg图片。Android SDK下载完成后,在下载的文件中获取yw_1222_0670.jpg图片。

      6. 替换UniApp插件包的图片。
        根据使用的客户端选择对应的操作:
        • iOS
          在需要集成实人认证的UniApp工程中,将yw_1222_0769.jpg图片替换UniApp插件包中iOS目录下的yw_1222_0769.jpg替换
        • Android
          在需要集成实人认证的UniApp工程中,将yw_1222_0670.jpg图片替换UniApp插件包中Android目录下的yw_1222_0670.jpgAndroid
    4. 导入本地插件。
      1. 打开需要集成实人认证的UniApp工程,在manifest.json文件下,单击App原生插件配置
      2. App原生插件配置区域,单击选择本地插件导入本地插件
      3. 本地插件选择对话框,选择需要打包生效的插件。
  • 制作自定义基座包。
    1. manifest.json文件下,选择运行 > 运行到手机或模拟器 > 运行基座选择 > 自定义调试基座(iOS),设置自定义调试基座。自定义调试基座
    2. manifest.json文件下,选择运行 > 运行到手机或模拟器 > 制作自定义调试基座,制作自定义调试基座。制作定义调试基座

调用实人认证

调用实人认证客户端前,您必须先调用DescribeVerifyToken获取认证Token(VerifyToken)。

实人认证提供以下两种调用方式:

  • 方式一: start(推荐)

    支持的认证方案包含RPBasicRPBioOnlyRPBioIDRPManualFDBioOnlyFVBioOnly。该方式会以H5页面显示身份证拍摄等操作。如果需要在控制台配置引导页、授权页和结果页,则只能使用该方式接入。

    // 第一步:获取插件Module。
    var bioDetectModule = uni.requireNativePlugin("RP-FaceDetectPlugin")
    
    // 第二步:调用实人认证。
    # 接口1 startByH5。
    # 参数:verifyToken。
    # 回调结果:ret关于结果的说明请参考下面的错误码说明。
    bioDetectModule.startWithVerifyToken({
                  'verifyToken': this.verifyToken
              },
              (ret) => {
                  switch (ret.state){
                    case -1: // 未完成认证。具体原因,请参见下方错误码说明。
                      break;
                    case 1: // 认证通过。具体原因,请参见下方错误码说明。
                      break;
                    case 2: // 认证失败。具体原因,请参见下方错误码说明。
                      break;
                  }
              }
          )
  • 方式二: startByNative

    如果您选择的认证方案只包含活体检测,可以使用该方式接入。支持的认证方案包含RPBioOnlyFDBioOnlyFVBioOnly。不支持在控制台配置引导页、授权页和结果页,这部分内容需要接入方自行处理。

    // 第一步:获取插件Module。
    var bioDetectModule = uni.requireNativePlugin("RP-FaceDetectPlugin")
    
    // 第二步:调用实人认证。
    # 接口2 startByNative。
    # 参数:verifyToken。
    # 回调结果:ret关于结果的说明请参考下面的错误码说明。
    bioDetectModule.startByNativeWithVerifyToken({
              'verifyToken': this.verifyToken
          },
          (ret) => {
              switch (ret.state){
                case -1: // 未完成认证。具体原因,请参见下方错误码说明。
                  break;
                case 1: // 认证通过。具体原因,请参见下方错误码说明。
                  break;
                case 2: // 认证失败。具体原因,请参见下方错误码说明。
                  break;
              }
          }
      )

错误码说明

在实人认证JavaScript回调的ret中可获取到认证状态和认证失败错误码。

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