本文档可以对照官方文档来看:支付宝身份验证
一、配置支付宝开放平台
1.1 开启身份认证功能
1.2 使用支付宝开放平台开发助手生成密钥
二、开始写代码
2.1 添加node.js的sdk
import AlipaySdk from "alipay-sdk";
import AlipayFormData from "alipay-sdk/lib/form";
2.2 身份认证初始化
准备接口必要参数,通过 alipay.user.certify.open.initialize 接口调用身份认证初始化服务
/**
* 身份认证初始化
* @param cert_name 姓名
* @param cert_no 证件号
*/
async certifyOpenInitialize(params: ICertifyOpenInitialize) {
try {
//身份信息json对象
const identityObj = {
identity_type: "CERT_INFO", //身份类型,必填
cert_type: "IDENTITY_CARD", //证件类型,必填
cert_name: params.certName, //真实姓名,必填
cert_no: params.certNo, //证件号码,必填
};
//商户配置json对象
const merchantConfigObj = {
return_url:
"https://test/ss",
};
//生成一个随机数作为订单号
var random_no = "";
for (
var i = 0;
i < 12;
i++ //j位随机数,用以加在时间戳后面。
) {
random_no += Math.floor(Math.random() * 10);
}
random_no = new Date().getTime() + random_no;
//身份认证初始化服务业务参数数据
const bizContentObj = {
outer_order_no: random_no,
biz_code: "FACE",
identity_param: identityObj,
merchant_config: merchantConfigObj,
};
const res = await sdk.exec("alipay.user.certify.open.initialize", {
bizContent: bizContentObj,
});
return res;
} catch (error) {
console.log(error);
throw new Error("身份认证初始化错误");
}
}
export interface ICertifyOpenInitialize {
certName: string;
certNo: string;
}
2.3 生成认证服务请求地址
将生成的 certify_id 作为入参,调用身份认证开始认证服务接口 alipay.user.certify.open.certify
/**
* 开始认证
* @param certifyID 初始化返回的certify_id
*/
async certifyOpenCertify(params: ICertifyOpenCertify) {
try {
let bizContentObj = {
certify_id: params.certifyID,
};
const formData = new AlipayFormData();
formData.setMethod("get");
formData.addField("biz_content", bizContentObj);
const res = await sdk.exec(
"alipay.user.certify.open.certify",
{},
{ formData: formData }
);
return { url: res };
} catch (error) {
console.log(error);
throw new Error("身份认证错误");
}
}
export interface ICertifyOpenCertify {
certifyID: string;
}
2.4 验证本次认证结果
调用身份认证查询服务接口alipay.user.certify.open.query
/**
* 认证查询
* @param certifyID 初始化返回的certify_id
*/
async certifyOpenQuery(params: ICertifyOpenCertify) {
try {
//设置certify_id
let bizContentObj = {
certify_id: params.certifyID,
};
const res = await sdk.exec("alipay.user.certify.open.query", {
bizContent: bizContentObj,
});
return res;
} catch (error) {
console.log(error);
throw new Error("身份认证查询错误");
}
}
export interface ICertifyOpenCertify {
certifyID: string;
}