本文指导您在支付宝端内 H5 页面中集成金融级实人认证服务。如果您希望在支付宝端外 H5 页面中集成金融级实人认证服务,参看端外唤起支付宝认证页面接入

前提条件

客户端安装的支付宝版本必须是 10.1.32+。
说明 您可以参考以下代码获取支付宝版本号,并做好 startBizService 版本的兼容处理:
const matchResult = window.navigator.userAgent.match(/AliApp\(AP\/([\d\.]+)\)/i);
const apVersion = (matchResult && matchResult[1]) || ''; // 如: 10.1.58.00000170

操作步骤

  1. 调用 API 发起认证
    1. 注入 js 库
      function ready(callback) {
          // 如果jsbridge已经注入则直接调用
          if (window.AlipayJSBridge) {
              callback && callback();
          } else {
          // 如果没有注入则监听注入的事件
              document.addEventListener('AlipayJSBridgeReady', callback, false);
          }
      }
    2. 发起认证服务。
      调用 startBizService 接口请求认证。
      function startAPVerify(options, callback) {
          AlipayJSBridge.call('startBizService', {
              name: 'open-certify',
              param: JSON.stringify(options),
          }, callback);
      }
    3. 唤起认证流程。
      发起认证包含的信息包括 certifyId 和网关 url。两者都通过服务端的相关接口取得。
      ready(function() {
          // 需要确保在 AlipayJSBridge ready 之后才调用
          startAPVerify({ 
              certifyId: certifyId, 
              url: url
              }, function(verifyResult) {
              // 认证结果回调触发, 以下处理逻辑为示例代码,开发者可根据自身业务特性来自行处理
              if (verifyResult.resultStatus === '9000') {
                  // 验证成功,接入方在此处处理后续的业务逻辑
                  // ...
                  return;
              }
      
          // 用户主动取消认证
          if (verifyResult.resultStatus === '6001') {
              // 可做下 toast 弱提示
              return;
          }
      
          const errorCode = verifyResult.result && verifyResult.result.errorCode;
          // 其他结果状态码判断和处理 ...
          });
      });
  2. 验证认证结果
    1. 回调函数出参
      回调函数带入的参数 verifyResult: { resultStatus:‘xx’, result: { } }
      名称 类型 描述
      resultStatus string 认证流程结果状态码, 详见以下 ResultStatus 定义
      result.certifyId string 本次认证流水号 certifyId
      result.errorCode string 业务异常错误码
      说明 result 对象可能为 null,API 接入者代码逻辑需要做防御性处理,避免 NPE 异常。
    2. ResultStatus
      状态码 描述
      9000 认证通过
      6002 网络异常
      6001 用户取消了业务流程,主动退出
      4000 业务异常
      说明
      • resultStatus = 6001、6002 时,result 对象数据为空,接入者不需要获取 result 对象数据。
      • resultStatus= 9000 时,业务方需要去查询认证结果接口查询最终状态(由于前端数据是可篡改的)。
      <Status:4000> 包含的部分 errorCode 如下表格所示 :
      错误码 描述
      UNKNOWN_ERROR 未知异常
      SYSTEM_ERROR 系统异常
      USER_IS_NOT_CERTIFY 用户未认证
      ... 其他