| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  |  | package esign | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import ( | 
					
						
							|  |  |  |  | 	"fmt" | 
					
						
							|  |  |  |  | 	"log" | 
					
						
							|  |  |  |  | ) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Example 展示如何使用重构后的e签宝SDK | 
					
						
							|  |  |  |  | func Example() { | 
					
						
							|  |  |  |  | 	// 1. 创建配置 | 
					
						
							|  |  |  |  | 	config, err := NewConfig( | 
					
						
							|  |  |  |  | 		"your_app_id", | 
					
						
							|  |  |  |  | 		"your_app_secret", | 
					
						
							|  |  |  |  | 		"https://smlopenapi.esign.cn", | 
					
						
							|  |  |  |  | 		"your_template_id", | 
					
						
							| 
									
										
										
										
											2025-07-28 01:46:39 +08:00
										 |  |  |  | 		&EsignContractConfig{ | 
					
						
							|  |  |  |  | 			Name:       "测试合同", | 
					
						
							|  |  |  |  | 			ExpireDays: 30, | 
					
						
							|  |  |  |  | 			RetryCount: 3, | 
					
						
							|  |  |  |  | 		}, | 
					
						
							|  |  |  |  | 		&EsignAuthConfig{ | 
					
						
							|  |  |  |  | 			OrgAuthModes:         []string{"ORG"}, | 
					
						
							|  |  |  |  | 			DefaultAuthMode:      "ORG", | 
					
						
							|  |  |  |  | 			PsnAuthModes:         []string{"PSN"}, | 
					
						
							|  |  |  |  | 			WillingnessAuthModes: []string{"WILLINGNESS"}, | 
					
						
							|  |  |  |  | 			RedirectUrl:          "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 		}, | 
					
						
							|  |  |  |  | 		&EsignSignConfig{ | 
					
						
							|  |  |  |  | 			AutoFinish:     true, | 
					
						
							|  |  |  |  | 			SignFieldStyle: 1, | 
					
						
							|  |  |  |  | 			ClientType:     "ALL", | 
					
						
							|  |  |  |  | 			RedirectUrl:    "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  |  | 	) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Fatal("配置创建失败:", err) | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 2. 创建客户端 | 
					
						
							|  |  |  |  | 	client := NewClient(config) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 示例1: 简单合同签署流程 | 
					
						
							|  |  |  |  | 	fmt.Println("=== 示例1: 简单合同签署流程 ===") | 
					
						
							|  |  |  |  | 	contractReq := &ContractSigningRequest{ | 
					
						
							|  |  |  |  | 		CompanyName:       "测试公司", | 
					
						
							|  |  |  |  | 		UnifiedSocialCode: "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonName:   "张三", | 
					
						
							|  |  |  |  | 		LegalPersonID:     "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonPhone:  "13800138000", | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	result, err := client.GenerateContractSigning(contractReq) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("合同签署失败: %v", err) | 
					
						
							|  |  |  |  | 	} else { | 
					
						
							|  |  |  |  | 		fmt.Printf("合同签署成功: %+v\n", result) | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 示例2: 企业认证流程 | 
					
						
							|  |  |  |  | 	fmt.Println("\n=== 示例2: 企业认证流程 ===") | 
					
						
							|  |  |  |  | 	authReq := &EnterpriseAuthRequest{ | 
					
						
							|  |  |  |  | 		CompanyName:       "测试公司", | 
					
						
							|  |  |  |  | 		UnifiedSocialCode: "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonName:   "张三", | 
					
						
							|  |  |  |  | 		LegalPersonID:     "123456789012345678", | 
					
						
							|  |  |  |  | 		TransactorName:    "李四", | 
					
						
							|  |  |  |  | 		TransactorMobile:  "13800138001", | 
					
						
							|  |  |  |  | 		TransactorID:      "123456789012345679", | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	authResult, err := client.GenerateEnterpriseAuth(authReq) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("企业认证失败: %v", err) | 
					
						
							|  |  |  |  | 	} else { | 
					
						
							|  |  |  |  | 		fmt.Printf("企业认证成功: %+v\n", authResult) | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 示例3: 分步操作 | 
					
						
							|  |  |  |  | 	fmt.Println("\n=== 示例3: 分步操作 ===") | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 3.1 填写模板 | 
					
						
							|  |  |  |  | 	templateData := map[string]string{ | 
					
						
							|  |  |  |  | 		"JFQY": "甲方公司", | 
					
						
							|  |  |  |  | 		"JFFR": "甲方法人", | 
					
						
							|  |  |  |  | 		"YFQY": "乙方公司", | 
					
						
							|  |  |  |  | 		"YFFR": "乙方法人", | 
					
						
							|  |  |  |  | 		"QDRQ": "2024年01月01日", | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	fileID, err := client.FillTemplate(templateData) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("模板填写失败: %v", err) | 
					
						
							|  |  |  |  | 		return | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	fmt.Printf("模板填写成功,文件ID: %s\n", fileID) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 3.2 创建签署流程 | 
					
						
							|  |  |  |  | 	signFlowReq := &CreateSignFlowRequest{ | 
					
						
							|  |  |  |  | 		FileID:              fileID.FileID, | 
					
						
							|  |  |  |  | 		SignerAccount:       "123456789012345678", | 
					
						
							|  |  |  |  | 		SignerName:          "乙方公司", | 
					
						
							|  |  |  |  | 		TransactorPhone:     "13800138000", | 
					
						
							|  |  |  |  | 		TransactorName:      "乙方法人", | 
					
						
							|  |  |  |  | 		TransactorIDCardNum: "123456789012345678", | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	signFlowID, err := client.CreateSignFlow(signFlowReq) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("创建签署流程失败: %v", err) | 
					
						
							|  |  |  |  | 		return | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	fmt.Printf("签署流程创建成功,流程ID: %s\n", signFlowID) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 3.3 获取签署链接 | 
					
						
							|  |  |  |  | 	signURL, shortURL, err := client.GetSignURL(signFlowID, "13800138000", "乙方公司") | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("获取签署链接失败: %v", err) | 
					
						
							|  |  |  |  | 		return | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	fmt.Printf("签署链接: %s\n", signURL) | 
					
						
							|  |  |  |  | 	fmt.Printf("短链接: %s\n", shortURL) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 3.4 查询签署状态 | 
					
						
							|  |  |  |  | 	status, err := client.GetSignFlowStatus(signFlowID) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("查询签署状态失败: %v", err) | 
					
						
							|  |  |  |  | 		return | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	fmt.Printf("签署状态: %s\n", status) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 3.5 检查是否完成 | 
					
						
							|  |  |  |  | 	completed, err := client.IsSignFlowCompleted(signFlowID) | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Printf("检查签署状态失败: %v", err) | 
					
						
							|  |  |  |  | 		return | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	fmt.Printf("签署是否完成: %t\n", completed) | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // ExampleBasicUsage 基础用法示例 | 
					
						
							|  |  |  |  | func ExampleBasicUsage() { | 
					
						
							|  |  |  |  | 	// 最简单的用法 - 一行代码完成合同签署 | 
					
						
							| 
									
										
										
										
											2025-07-28 01:46:39 +08:00
										 |  |  |  | 	config, _ := NewConfig("app_id", "app_secret", "server_url", "template_id", &EsignContractConfig{ | 
					
						
							|  |  |  |  | 		Name:       "测试合同", | 
					
						
							|  |  |  |  | 		ExpireDays: 30, | 
					
						
							|  |  |  |  | 		RetryCount: 3, | 
					
						
							|  |  |  |  | 	}, &EsignAuthConfig{ | 
					
						
							|  |  |  |  | 		OrgAuthModes:         []string{"ORG"}, | 
					
						
							|  |  |  |  | 		DefaultAuthMode:      "ORG", | 
					
						
							|  |  |  |  | 		PsnAuthModes:         []string{"PSN"}, | 
					
						
							|  |  |  |  | 		WillingnessAuthModes: []string{"WILLINGNESS"}, | 
					
						
							|  |  |  |  | 		RedirectUrl:          "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 	}, &EsignSignConfig{ | 
					
						
							|  |  |  |  | 		AutoFinish:     true, | 
					
						
							|  |  |  |  | 		SignFieldStyle: 1, | 
					
						
							|  |  |  |  | 		ClientType:     "ALL", | 
					
						
							|  |  |  |  | 		RedirectUrl:    "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  |  | 	client := NewClient(config) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 快速合同签署 | 
					
						
							|  |  |  |  | 	result, err := client.GenerateContractSigning(&ContractSigningRequest{ | 
					
						
							|  |  |  |  | 		CompanyName:       "我的公司", | 
					
						
							|  |  |  |  | 		UnifiedSocialCode: "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonName:   "张三", | 
					
						
							|  |  |  |  | 		LegalPersonID:     "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonPhone:  "13800138000", | 
					
						
							|  |  |  |  | 	}) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Fatal("签署失败:", err) | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	fmt.Printf("请访问以下链接进行签署: %s\n", result.SignURL) | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // ExampleWithCustomData 自定义数据示例 | 
					
						
							|  |  |  |  | func ExampleWithCustomData() { | 
					
						
							| 
									
										
										
										
											2025-07-28 01:46:39 +08:00
										 |  |  |  | 	config, _ := NewConfig("app_id", "app_secret", "server_url", "template_id", &EsignContractConfig{ | 
					
						
							|  |  |  |  | 		Name:       "测试合同", | 
					
						
							|  |  |  |  | 		ExpireDays: 30, | 
					
						
							|  |  |  |  | 		RetryCount: 3, | 
					
						
							|  |  |  |  | 	}, &EsignAuthConfig{ | 
					
						
							|  |  |  |  | 		OrgAuthModes:         []string{"ORG"}, | 
					
						
							|  |  |  |  | 		DefaultAuthMode:      "ORG", | 
					
						
							|  |  |  |  | 		PsnAuthModes:         []string{"PSN"}, | 
					
						
							|  |  |  |  | 		WillingnessAuthModes: []string{"WILLINGNESS"}, | 
					
						
							|  |  |  |  | 		RedirectUrl:          "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 	}, &EsignSignConfig{ | 
					
						
							|  |  |  |  | 		AutoFinish:     true, | 
					
						
							|  |  |  |  | 		SignFieldStyle: 1, | 
					
						
							|  |  |  |  | 		ClientType:     "ALL", | 
					
						
							|  |  |  |  | 		RedirectUrl:    "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  |  | 	client := NewClient(config) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 使用自定义模板数据 | 
					
						
							|  |  |  |  | 	customData := map[string]string{ | 
					
						
							|  |  |  |  | 		"custom_field_1": "自定义值1", | 
					
						
							|  |  |  |  | 		"custom_field_2": "自定义值2", | 
					
						
							|  |  |  |  | 		"contract_date":  "2024年01月01日", | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	result, err := client.GenerateContractSigning(&ContractSigningRequest{ | 
					
						
							|  |  |  |  | 		CompanyName:       "我的公司", | 
					
						
							|  |  |  |  | 		UnifiedSocialCode: "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonName:   "张三", | 
					
						
							|  |  |  |  | 		LegalPersonID:     "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonPhone:  "13800138000", | 
					
						
							|  |  |  |  | 		CustomData:        customData, | 
					
						
							|  |  |  |  | 	}) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Fatal("签署失败:", err) | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	fmt.Printf("自定义合同签署链接: %s\n", result.SignURL) | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // ExampleEnterpriseAuth 企业认证示例 | 
					
						
							|  |  |  |  | func ExampleEnterpriseAuth() { | 
					
						
							| 
									
										
										
										
											2025-07-28 01:46:39 +08:00
										 |  |  |  | 	config, _ := NewConfig("app_id", "app_secret", "server_url", "template_id", &EsignContractConfig{ | 
					
						
							|  |  |  |  | 		Name:       "测试合同", | 
					
						
							|  |  |  |  | 		ExpireDays: 30, | 
					
						
							|  |  |  |  | 		RetryCount: 3, | 
					
						
							|  |  |  |  | 	}, &EsignAuthConfig{ | 
					
						
							|  |  |  |  | 		OrgAuthModes:         []string{"ORG"}, | 
					
						
							|  |  |  |  | 		DefaultAuthMode:      "ORG", | 
					
						
							|  |  |  |  | 		PsnAuthModes:         []string{"PSN"}, | 
					
						
							|  |  |  |  | 		WillingnessAuthModes: []string{"WILLINGNESS"}, | 
					
						
							|  |  |  |  | 		RedirectUrl:          "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 	}, &EsignSignConfig{ | 
					
						
							|  |  |  |  | 		AutoFinish: true, | 
					
						
							|  |  |  |  | 		SignFieldStyle: 1, | 
					
						
							|  |  |  |  | 		ClientType: "ALL", | 
					
						
							|  |  |  |  | 		RedirectUrl: "https://www.tianyuanapi.com/certification/callback", | 
					
						
							|  |  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  |  | 	client := NewClient(config) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// 企业认证 | 
					
						
							|  |  |  |  | 	authResult, err := client.GenerateEnterpriseAuth(&EnterpriseAuthRequest{ | 
					
						
							|  |  |  |  | 		CompanyName:       "我的公司", | 
					
						
							|  |  |  |  | 		UnifiedSocialCode: "123456789012345678", | 
					
						
							|  |  |  |  | 		LegalPersonName:   "张三", | 
					
						
							|  |  |  |  | 		LegalPersonID:     "123456789012345678", | 
					
						
							|  |  |  |  | 		TransactorName:    "李四", | 
					
						
							|  |  |  |  | 		TransactorMobile:  "13800138001", | 
					
						
							|  |  |  |  | 		TransactorID:      "123456789012345679", | 
					
						
							|  |  |  |  | 	}) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if err != nil { | 
					
						
							|  |  |  |  | 		log.Fatal("企业认证失败:", err) | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	fmt.Printf("请访问以下链接进行企业认证: %s\n", authResult.AuthURL) | 
					
						
							|  |  |  |  | } |