feat(userVerify): 添加阿里云身份证二要素核验功能
- 在接口层新增 verifyIdCard 接口,实现姓名与身份证号核验 - userVerify 页面提交时增加身份核验逻辑,核验失败阻止提交 - 调用核验接口时显示加载状态,并根据结果提示用户 - 后端依赖 aliyun cloudauth,提供实人认证相关服务接口 - 完成基本的错误捕获与用户提示,提升实名认证流程安全性
This commit is contained in:
@@ -128,3 +128,24 @@ export async function submit(data: UserVerify) {
|
||||
}
|
||||
return Promise.reject(new Error(res.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 阿里云实人认证 - 身份证二要素核验
|
||||
* 验证姓名和身份证号是否一致
|
||||
*/
|
||||
export async function verifyIdCard(realName: string, idCard: string) {
|
||||
const res = await request.post<ApiResult<{
|
||||
success: boolean;
|
||||
isMatch: boolean;
|
||||
bizCode: string;
|
||||
message: string;
|
||||
}>>(
|
||||
SERVER_API_URL + '/id-verification/verify-id-card',
|
||||
null,
|
||||
{ params: { realName, idCard } }
|
||||
);
|
||||
if (res.code === 0) {
|
||||
return res.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.message));
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
Checkbox,
|
||||
} from '@nutui/nutui-react-taro'
|
||||
import {UserVerify} from "@/api/system/userVerify/model";
|
||||
import {addUserVerify, myUserVerify, updateUserVerify} from "@/api/system/userVerify";
|
||||
import {addUserVerify, myUserVerify, updateUserVerify, verifyIdCard} from "@/api/system/userVerify";
|
||||
import {uploadFile} from "@/api/system/file";
|
||||
|
||||
function Index() {
|
||||
@@ -62,7 +62,7 @@ function Index() {
|
||||
};
|
||||
|
||||
// 提交表单
|
||||
const submitSucceed = (values: any) => {
|
||||
const submitSucceed = async (values: any) => {
|
||||
console.log('提交表单', values);
|
||||
if (FormData.status != 2 && FormData.status != undefined) return false;
|
||||
|
||||
@@ -113,6 +113,36 @@ function Index() {
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
// 个人认证:先调用阿里云实人认证进行身份核验
|
||||
if (FormData.type == 0) {
|
||||
Taro.showLoading({ title: '身份核验中...' });
|
||||
try {
|
||||
const verifyResult = await verifyIdCard(FormData.realName!, FormData.idCard!);
|
||||
Taro.hideLoading();
|
||||
|
||||
if (!verifyResult.isMatch) {
|
||||
Taro.showToast({
|
||||
title: '身份信息不一致,请核实后重新填写',
|
||||
icon: 'none',
|
||||
duration: 3000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
// 核验通过,继续提交
|
||||
} catch (error: any) {
|
||||
Taro.hideLoading();
|
||||
console.error('身份核验失败', error);
|
||||
Taro.showToast({
|
||||
title: error.message || '身份核验失败,请稍后重试',
|
||||
icon: 'none',
|
||||
duration: 3000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const saveOrUpdate = isUpdate ? updateUserVerify : addUserVerify;
|
||||
saveOrUpdate({...FormData, status: 0}).then(() => {
|
||||
Taro.showToast({title: `提交成功`, icon: 'success'})
|
||||
|
||||
Reference in New Issue
Block a user