162 lines
4.0 KiB
Go
162 lines
4.0 KiB
Go
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")
|
||
}
|
||
}
|
||
} |