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") } } }