本文指导您在 Android 应用中集成金融级实人认证服务。。

前提条件

应用必须在 Android 4.3+ 平台上运行。

获取 SDK 和 Demo 代码

添加 SDK 依赖

如果您的应用客户端不依赖 mPaaS 基础库,则添加标准版 SDK;如果您的应用客户端依赖 mPaaS 基础库,则 添加 mPaaS 版 SDK

添加标准版 SDK

  1. 解压 AlipayVerifySDK.zip,将以下包放入 libs 目录下:
    • verifysdk-1.0.0.181218125703.aar
    • sdk-3.0.0.00000027.aar
    • deviceid-release-6.0.2.20171228.aar
  2. 在工程的 build.gradle 文件中添加 libs 目录作为依赖仓库。
    allprojects {
      repositories {
          // 添加以下内容
          flatDir {
              dirs 'libs'
          }
       }
    }
  3. 在应用的 build.gradle 文件中添加依赖。
    dependencies {
    // 添加如下内容
    compile (name:'verifysdk-1.0.0.181218125703', ext:'aar')
    compile (name:'sdk-3.0.0.00000027', ext:'aar')
    compile (name:'deviceid-release-6.0.2.20171228', ext:'aar')
    compile 'com.alibaba:fastjson:1.2.8@jar'
    compile 'com.squareup:otto:1.3.8'
    }

添加 mPaaS 版 SDK

  1. AlipayVerifySDK.zip,并将 verifysdk-1.0.0.181218125703.aar 放入 libs 目录下。
  2. 在工程的 build.gradle 文件中添加 libs 目录作为依赖仓库。
    allprojects {
      repositories {
          // 添加以下内容
          flatDir {
              dirs 'libs'
          }
       }
    }
  3. 确认通过 mPaaS 插件构建的应用带有如下仓库依赖。
    allprojects {
      repositories {
          maven {
              credentials {
                  username "*******"
                  password "*******"
              }
              url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/"
          }
          flatDir {
              dirs 'libs'
          }
          jcenter()
       }
    }
  4. 在 bundle 工程的 app 模块中,配置 build.gradle 文件,添加 SDK 的依赖。
    dependencies {
      // 添加如下内容
      provided "com.alipay.android.phone.zoloz:zcloud-build:3.0.0.180411142833:api@jar"
      compile (name:'verifysdk-1.0.0.181218125703', ext:'aar')
      compile "com.alipay.android.phone:deviceid-release:6.0.2.20171228@aar"
      compile 'com.squareup:otto:1.3.8'
    }
  5. 在 portal 工程的主 module 模块中,配置 build.gradle 文件,添加 bundle 的依赖。
    dependencies {
      // 添加如下内容
      bundle "com.alipay.android.phone.zoloz:zcloud-build:3.0.0.180411142833:nolog@jar"
      manifest "com.alipay.android.phone.zoloz:zcloud-build:3.0.0.180411142833:AndroidManifest@xml"
    }

调用 API 发起认证

  1. 封装发起认证的信息。
    发起认证包含的信息包括 certifyId 和网关 url。其中,certifyId 通过服务端的认证初始化接口取得,网关 url 通过服务端的认证接口获得。
    JSONObject requestInfo = new JSONObject();
    requestInfo.put("url", url);
    requestInfo.put("certifyId", certifyId);
  2. 发起认证。
    调用 startService 接口请求认证,传入当前的 context、认证信息以及接收处理结果的回调。
    ServiceFactory.build()
      .startService(context, requestInfo, new ICallback() {
          @Override
          public void onResponse(Map<String, String> response) {
          // TODO with sdk response
          }
      });
  3. 获取认证结果。
    认证结束后,ICallback.onResponse 方法会被调用,参数 response 中包含本次调用的结果。
    public interface ICallback {
      /**
       * 返回结果
       * resultStatus 结果状态码
       * result.certifyId 本次认证流水号
       *
       * @param response 结果对象
       */
      void onResponse(Map<String, String> response);
    }

    其中,ResultStatus 枚举定义如下:

    状态码 描述
    9000 认证通过。
    6002 网络异常。
    6001 用户取消了认证流程,主动退出。
    4000 系统异常。

混淆配置参考

为避免接口混淆,您可以参考以下代码来保留类名:

-keep public class com.alipay.mobile.security.zim.api.**{
    public <fields>;
    public <methods>;
}

-keep class com.alipay.mobile.security.zim.biz.ZIMFacadeBuilder {
  !private <fields>;
   !private <methods>;
}

-keep class com.alipay.android.phone.mobilecommon.logger.AlipayMonitorLogService {
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.android.phone.mobilecommon.rpc.AlipayRpcService {
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.android.phone.mobilecommon.apsecurity.AlipayApSecurityService {
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.zoloz.toyger.bean.ToygerMetaInfo {
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.zoloz.toyger.algorithm.** { *; }

-keep class com.alipay.zoloz.toyger.blob.** {
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.zoloz.toyger.face.** {
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.zoloz.hardware.camera.impl.** {
    !private <fields>;
    !private <methods>;
}


-keep public class com.alipay.mobile.security.zim.plugin.**{
    public <fields>;
    public <methods>;
}

-keep class * extends com.alipay.mobile.security.zim.gw.BaseGwService{
    !private <fields>;
    !private <methods>;
}

-keep class * extends com.alipay.mobile.security.bio.service.BioMetaInfo{
    !private <fields>;
    !private <methods>;
}

-keep class com.alipay.zoloz.toyger.workspace.FaceRemoteConfig{
    *;
}

-keep public class com.alipay.zoloz.toyger.**{
    *;
}
-keep public class com.alipay.mobile.security.zim.gw.**{
    *;
}