文档

Harmony接入

更新时间:

金融级实人认证服务提供Harmony客户端SDK,帮助您在业务应用(App)中实现刷脸认证功能。本文将结合示例代码进行Harmony客户端接入的详细说明。

使用限制

  • 刷脸应用必须运行在Harmony Next 4.1及以上版本。

  • 不支持模拟器模式调试。

权限说明

Harmony SDK权限说明如下:

权限

是否必须

说明

ohos.permission.INTERNET

联网权限。SDK需要联网才能使用。

ohos.permission.GET_NETWORK_INFO

网络状态确认。SDK可以根据网络状态提供更好的服务。

ohos.permission.CAMERA

摄像头权限。

依赖配置

  1. 下载Harmony SDK并解压。

    该SDK为Harmony的har包。

  2. 将har文件拷贝到工程中存放har包的目录。

    建议参考鸿蒙官方文档放至libs目录下,在工程根目录的oh-package.json5添加认证包的版本依赖树管理,示例如下:

    image

  3. 修改项目工程中的oh-package.json5文件,在denpendencies中添加liyunFacade、AuthBase、LivenessVerify依赖包,示例如下:

    {
      ....
      "dependencies": {
        "AliyunFacade" : "file:./libs/AliyunFacade-xxx.har",
        "AuthBase" : "file:./libs/AuthBase-xxx.har",
        "LivenessVerify" : "file:./libs/LivenessVerify-xxx.har"
        ....
      }
    }

接口说明

Harmony SDK包含初始化(init、initIPv6)、获取MetaInfos(getMetaInfos)和开始认证(verify)3 个核心接口。

初始化SDK

  • 描述:调用该函数完成SDK内部初始化。请务必做延迟初始化配置,确保在用户同意《隐私权政策》后,在人脸识别业务场景中初始化SDK。

  • 函数原型:

    public init(context: Context, params?: HashMap<string, string>): number
    public initIPv6(context: Context, params?: HashMap<string, string>): number
    说明

    请根据结合实际情况选用IPv4或者IPv6网络环境进行业务调用。

  • 参数说明:

    名称

    类型

    说明

    context

    Context

    当前Ability的Context。

    params

    HashMap<string, string>

    自定义参数,可不传。

  • 返回值:Number类型。0表示初始化无异常。

获取metaInfos

  • 描述:移动端环境信息会发送至业务服务器端,业务服务器端将这些信息作为参数之一(MetaInfos)调用服务端初始化认证接口,从而获取认证报文,用于后续认证环节。

  • 函数原型:

    public static getMetaInfos(context: Context, params?: HashMap<string, string>): string
  • 参数说明:

    名称

    类型

    说明

    context

    Context

    当前Ability的Context

    params

    HashMap<string, string>

    自定义参数,可不传。

  • 返回值:String类型,以JSON格式返回当前移动设备端环境以及SDK信息。

    {
     "deviceType": "harmony",
     "osVersion": "2",
     "osFullName": "2.1.6.1(Beta1)",
     "deviceModel": "NOH-AN00",
     "appName": "com.dtf.faceverify",
     "appVersion": "1.0.0",
     "nfcSupport": "N",
     "bioMetaInfo": "7.1.2:393216,0",
     "apdidToken": "",
     "sdkVersion": "1.1.0",
     "securityVersion": "",
     "zimVer": "",
     "voiceSdkVersion": ""
    }

发起认证

  • 描述:调用该函数发起实人认证。

  • 函数原型:

    public static verify(context: Context, callBack: ZimCallBack, params?: HashMap<string, string>): void
  • 参数说明:

    名称

    类型

    说明

    context

    Context

    当前Ability的Context

    callBack

    ZimCallBack

    认证结果的回调接口,定义如下:

    export interface ZimCallBack {
     onComplete: (response: ZimResponse) => void;
     encrypt: (content: string) => string;
    }

    ZIMResponse类的定义,请参见下文认证结果及错误码

    params

    HashMap<string, string>

    自定义参数,需要根据要求传入数据,params取值,请参见表params取值说明

    表 1. ZimCallBack接口回调说明

    方法

    说明

    示例值

    onComplete

    SDK认证结果回调

    参考ZimResponse类定义

    表 2. params取值说明

    取值

    说明

    示例值

    ext_params_key_use_message_box

    当刷脸认证过程中出现异常情况,是否使用SDK内部的弹框提示。取值:

    • true:SDK先弹框提示,确定之后,返回错误code。

    • false:不弹提示框,直接返回错误code,客户业务应用App自行决定如何提示。

    true

    ext_params_key_open_full_screen

    进入SDK认证后是否开启全屏显示,SDK默认会开启全屏显示以保证显示正常。设置单次有效。

    • true:开启全屏显示。

    • false:关闭全屏显示。

    true

  • 返回值:无。

认证结果及错误码

认证结果通过ZIMResponse类返回,定义如下:

/*
 * 结果返回
 */
export class ZimResponse {
 /**
 * 结果码主码
 */
 public code: string;

 /**
 * 结果码子码
 */
 public subCode: string;

 /**
 * 错误原因
 */
 public msg: string;

 /**
 * 留证视频路径
 */
 public videoPath: string;

 /**
 * 人脸照片二进制数据
 */
 public faceImage: Uint8Array;

 /**
 * 身份证正面二进制数据
 */
 public ocrFrontImage: Uint8Array;

 /**
 * 身份证方面二进制数据
 */
 public ocrBackImage: Uint8Array;
}

错误码

错误码文案

错误码描述

1000

刷脸成功

表示SDK活检成功,该结果仅供参考,可通过调用服务端DescribeFaceVerify接口获取最终认证结果。

1001

系统错误

表示系统错误。

1003

验证中断

表示验证中断。

2002

网络错误

表示网络错误。

2003

客户端设备时间错误

表示客户端设备时间错误。

2006

刷脸失败

表示刷脸失败,如需获取更详细的失败原因,需调用服务端DescribeFaceVerify接口获取。

更多subCode错误码信息,请参见金融级客户端错误码详情 - Harmony

接口混淆配置

为避免接口被混淆而造成功能异常,请查看har包中obfuscation.txt文件中的配置,请勿移除该文件。

示例代码

import { ZimConstant, ZimFacade, ZimResponse } from 'AliyunFacade';
import { HashMap } from '@kit.ArkTS';
import { JSONUtil } from 'AuthBase';

@Entry
@Component
struct Index {
  @State message: string = '发起认证';
  @State certifyID: string = ''

  build() {
    Row() {
      Column() {
        Button(this.message)
          .fontSize(18)
          .fontWeight(FontWeight.Bold)
          .onClick((event: ClickEvent) => {
            let params: HashMap<string, string> = new HashMap();
            // SDK 全屏显示,默认为true
            params.set(ZimConstant.KEY_NEED_FULL_SCREEN, 'true');
            // SDK 展示对客弹窗信息,默认为true
            params.set(ZimConstant.KEY_USE_MESSAGE_BOX, 'true');
            ZimFacade.verify(getContext(), this.certifyID, {
              onComplete: (response: ZimResponse) => {
                let result: HashMap<string, string> = new HashMap();
                result.set('code', response.code);
                result.set('subCode', response.subCode);
                result.set('msg', response.msg);
                result.set('certifyID', this.certifyID);
                this.certifyID = '';
                let showResult: string = JSONUtil.parseMapToString(result);
                console.log("Aliyun", showResult);
              }
            }, params)
          })
          .margin({ top: 10 })
      }
      .width('100%')
    }
    .height('100%')
  }
}

Demo代码包

联系商务经理咨询获取。

  • 本页导读
文档反馈