本文指导您在支付宝端内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. 验证认证结果。
    回调函数带入的参数verifyResult: { resultStatus:‘xx’, result: { } }说明如下:
    参数名称 类型 描述
    resultStatus string 认证流程结果状态码,具体请参见下文ResultStatus定义。
    result.certifyId string 本次认证流水号certifyId。
    result.errorCode string 业务异常错误码。
    说明 result的对象可能为null,API接入者代码逻辑需要做防御性处理,避免NPE异常。
    resultStatus枚举取值如下:
    状态码 描述
    9000 认证通过。
    6002 网络异常。
    6001 用户取消了业务流程,主动退出。
    4000 业务异常。
    说明
    • resultStatus为6001、6002时,result对象数据为空,接入者不需要获取result对象数据。
    • resultStatus为9000时,由于前端数据是可以修改的,业务方需要去查询认证结果接口的最终状态。
    当resultStatus为4000时,包含的部分错误码如下表格所示 :
    错误码 描述
    UNKNOWN_ERROR 未知异常。
    SYSTEM_ERROR 系统异常。
    USER_IS_NOT_CERTIFY 用户未认证。