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