Files
tyapi-server/internal/infrastructure/external/alicloud/example_advanced.go
2025-08-04 17:16:38 +08:00

162 lines
4.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package alicloud
import (
"encoding/json"
"fmt"
"log"
)
// ExampleAdvancedUsage 高级使用示例
func ExampleAdvancedUsage() {
// 创建阿里云服务实例
host := "https://kzidcardv1.market.alicloudapi.com"
appCode := "您的AppCode"
service := NewAlicloudService(host, appCode)
// 示例1: 身份证二要素验证
fmt.Println("=== 示例1: 身份证二要素验证 ===")
exampleIdCardCheck(service)
// 示例2: 其他API调用假设
fmt.Println("\n=== 示例2: 其他API调用 ===")
exampleOtherAPI(service)
}
// exampleIdCardCheck 身份证验证示例
func exampleIdCardCheck(service *AlicloudService) {
// 构建请求参数
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
// 处理验证结果
fmt.Printf("验证结果: %d (%s)\n", idCardData.Result, idCardData.Desc)
fmt.Printf("生日: %s\n", idCardData.Birthday)
fmt.Printf("性别: %s\n", idCardData.Sex)
fmt.Printf("地址: %s\n", idCardData.Address)
fmt.Printf("订单号: %s\n", idCardData.OrderNo)
if idCardData.Result == 1 {
fmt.Println("✅ 身份证信息验证通过")
} else {
fmt.Println("❌ 身份证信息验证失败")
}
}
// exampleOtherAPI 其他API调用示例
func exampleOtherAPI(service *AlicloudService) {
// 假设调用其他API
params := map[string]interface{}{
"param1": "value1",
"param2": "value2",
}
// 调用API
responseBody, err := service.CallAPI("other/api/path", params)
if err != nil {
log.Printf("API调用失败: %v", err)
return
}
// 根据具体API的响应结构进行解析
// 这里只是示例实际使用时需要根据API文档定义相应的结构体
fmt.Printf("API响应数据: %s\n", string(responseBody))
// 示例:解析通用响应结构
var genericData map[string]interface{}
if err := json.Unmarshal(responseBody, &genericData); err != nil {
log.Printf("响应解析失败: %v", err)
return
}
fmt.Printf("解析后的数据: %+v\n", genericData)
}
// ExampleErrorHandling 错误处理示例
func ExampleErrorHandling() {
host := "https://kzidcardv1.market.alicloudapi.com"
appCode := "您的AppCode"
service := NewAlicloudService(host, appCode)
// 测试各种错误情况
testCases := []struct {
name string
idCard string
desc string
}{
{"张三", "123456789", "无效身份证号"},
{"", "110101199001011234", "空姓名"},
{"张三", "", "空身份证号"},
}
for _, tc := range testCases {
fmt.Printf("\n测试: %s\n", tc.desc)
params := map[string]interface{}{
"name": tc.name,
"idcard": tc.idCard,
}
responseBody, err := service.CallAPI("api-mall/api/id_card/check", params)
if err != nil {
fmt.Printf("❌ 网络请求错误: %v\n", err)
continue
}
// 解析响应
var response struct {
Msg string `json:"msg"`
Code int `json:"code"`
Data interface{} `json:"data"`
}
if err := json.Unmarshal(responseBody, &response); err != nil {
fmt.Printf("❌ 响应解析失败: %v\n", err)
continue
}
if response.Code != 200 {
fmt.Printf("❌ 预期错误: code=%d, msg=%s\n", response.Code, response.Msg)
} else {
fmt.Printf("⚠️ 意外成功\n")
}
}
}