本文档可以对照官方文档来看:支付宝身份验证
一、配置支付宝开放平台
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_idlet 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;}