端内接入支付宝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. 注入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;
        // 其他结果状态码判断和处理。
        });
    });
  4. 验证认证结果。

    回调函数带入的参数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

    用户未认证。