3.8 KiB
3.8 KiB
阿里云二要素验证服务
这个服务提供了调用阿里云身份证二要素验证API的功能,用于验证姓名和身份证号码是否匹配。
功能特性
- 身份证二要素验证(姓名 + 身份证号)
- 支持详细验证结果返回
- 支持简单布尔值判断
- 错误处理和中文错误信息
配置说明
必需配置
Host: 阿里云API的域名地址AppCode: 阿里云市场应用的AppCode
配置示例
host := "https://kzidcardv1.market.alicloudapi.com"
appCode := "您的AppCode"
使用方法
1. 创建服务实例
service := NewAlicloudService(host, appCode)
2. 调用API
身份证二要素验证示例
// 构建请求参数
params := map[string]interface{}{
"name": "张三",
"idcard": "110101199001011234",
}
// 调用API
responseBody, err := service.CallAPI("api-mall/api/id_card/check", params)
if err != nil {
log.Printf("验证失败: %v", err)
return
}
// 解析完整响应结构
var response struct {
Msg string `json:"msg"`
Success bool `json:"success"`
Code int `json:"code"`
Data struct {
Birthday string `json:"birthday"`
Result int `json:"result"`
Address string `json:"address"`
OrderNo string `json:"orderNo"`
Sex string `json:"sex"`
Desc string `json:"desc"`
} `json:"data"`
}
if err := json.Unmarshal(responseBody, &response); err != nil {
log.Printf("响应解析失败: %v", err)
return
}
// 检查响应状态
if response.Code != 200 {
log.Printf("API返回错误: code=%d, msg=%s", response.Code, response.Msg)
return
}
idCardData := response.Data
// 判断验证结果
if idCardData.Result == 1 {
fmt.Println("身份证信息验证通过")
} else {
fmt.Println("身份证信息验证失败")
}
通用API调用
// 调用其他阿里云API
params := map[string]interface{}{
"param1": "value1",
"param2": "value2",
}
responseBody, err := service.CallAPI("your/api/path", params)
if err != nil {
log.Printf("API调用失败: %v", err)
return
}
// 根据具体API的响应结构进行解析
// 每个API的响应结构可能不同,需要根据API文档定义相应的结构体
var response struct {
Msg string `json:"msg"`
Code int `json:"code"`
Data interface{} `json:"data"`
}
if err := json.Unmarshal(responseBody, &response); err != nil {
log.Printf("响应解析失败: %v", err)
return
}
// 处理响应数据
fmt.Printf("响应数据: %s\n", string(responseBody))
响应格式
通用响应结构
{
"msg": "成功",
"success": true,
"code": 200,
"data": {
// 具体的业务数据
}
}
身份证验证响应示例
成功响应 (code: 200)
{
"msg": "成功",
"success": true,
"code": 200,
"data": {
"birthday": "19840816",
"result": 1,
"address": "浙江省杭州市淳安县",
"orderNo": "202406271440416095174",
"sex": "男",
"desc": "不一致"
}
}
参数错误响应 (code: 400)
{
"msg": "请输入有效的身份证号码",
"code": 400,
"data": null
}
错误响应
{
"msg": "AppCode无效",
"success": false,
"code": 400
}
错误处理
服务定义了以下错误类型:
ErrDatasource: 数据源异常ErrSystem: 系统异常ErrInvalid: 身份证信息不匹配
注意事项
- 请确保您的AppCode有效且有足够的调用额度
- 身份证号码必须是18位有效格式
- 姓名必须是真实有效的姓名
- 建议在生产环境中添加适当的重试机制和超时设置
- 请遵守阿里云API的使用规范和频率限制
依赖
- Go 1.16+
- 标准库:
net/http,encoding/json,net/url