本文介绍了卡证核身方案纯服务端集成的Go SDK调用示例。
前提条件
需要使用的Go版本在1.12.0版本及以上。
已添加认证场景,并获取对应的场景ID。具体操作,请参见添加认证场景。
安装SDK
关于Go SDK源代码,请参见Go SDK。
通过go mod
来管理项目依赖:
go get github.com/alibabacloud-go/cloudauth-20200618
示例
方式一:不使用本地证件示例
package main import ( "fmt" cloudauth "github.com/alibabacloud-go/cloudauth-20200618/client" rpc "github.com/alibabacloud-go/tea-rpc/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/credentials-go/credentials" ) func main() { //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。 // 初始化Credential。 credential, _err := credentials.NewCredential(nil) if _err != nil { panic(_err) } // 初始化Client。 config = open_api_models.Config(&openapi.Config{ // 使用Credential配置凭证。 Credential: credential, // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), Endpoint: endpoint, }) client, err := cloudauth.NewClient(config) if err != nil { panic(err) } // 通过以下代码创建RuntimeObject实例并设置运行参数。 runtimeObject := new(util.RuntimeOptions). // 设置不自动重试。 SetAutoretry(false). // 设置连接超时时间(单位ms)。 SetConnectTimeout(10000). // 设置调用超时时间(单位ms)。 SetReadTimeout(10000) // 通过以下代码创建API请求并设置参数。 request := new(cloudauth.ElementSmartVerifyRequest). SetSceneId(200xxxx). SetOuterOrderNo("商户请求的唯一标识"). SetMode("OCR_VERIFY_ID_NAME"). // 固定值。 SetCertType("IDENTITY_CARD"). SetCertUrl("https://www.aliyun.com/test.jpeg") // SetCertName("张三"). // SetCertNo("18位身份证号"). // SetCertNationalEmblemUrl("https://www.aliyun.com/test.jpeg") // 通过以下代码发起请求并处理应答或异常。 response, err := client.ElementSmartVerify(request, runtimeObject) if err != nil { fmt.Println(err.Error()) } fmt.Println(*response.Message) fmt.Println(*response.Code) fmt.Println(*response.ResultObject.Passed) fmt.Println(*response.ResultObject.CertifyId) fmt.Println(*response.ResultObject.SubCode) fmt.Println(*response.ResultObject.MaterialInfo) }
方式二:使用本地证件示例
package main import ( "fmt" "os" cloudauth "github.com/alibabacloud-go/cloudauth-20200618/client" rpc "github.com/alibabacloud-go/tea-rpc/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/credentials-go/credentials" ) func main() { //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。 // 初始化Credential。 credential, _err := credentials.NewCredential(nil) if _err != nil { panic(_err) } // 初始化Client。 config = open_api_models.Config(&openapi.Config{ // 使用Credential配置凭证。 Credential: credential, // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), Endpoint: endpoint, }) client, err := cloudauth.NewClient(config) if err != nil { panic(err) } // 通过以下代码创建RuntimeObject实例并设置运行参数。 runtimeObject := new(util.RuntimeOptions). // 设置不自动重试。 SetAutoretry(false). // 设置连接超时时间(单位ms)。 SetConnectTimeout(10000). // 设置调用超时时间(单位ms)。 SetReadTimeout(10000) // 通过以下代码创建API请求并设置参数。 file, err := os.Open("本地文件路径") if err != nil { panic(err) } request := new(cloudauth.ElementSmartVerifyAdvanceRequest). SetSceneId(20022). SetOuterOrderNo("商户请求的唯一标识"). SetMode("OCR_VERIFY_ID_NAME"). // 固定值。 SetCertType("IDENTITY_CARD"). SetCertFileObject(file) // SetCertName("张三"). // SetCertNo("18位身份证号"). // SetCertNationalEmblemUrl("https://www.aliyun.com/test.jpeg") // 通过以下代码发起请求并处理应答或异常。 response, err := client.ElementSmartVerifyAdvance(request, runtimeObject) if err != nil { fmt.Println(err.Error()) } fmt.Println(*response.Message) fmt.Println(*response.Code) fmt.Println(*response.ResultObject.Passed) fmt.Println(*response.ResultObject.CertifyId) fmt.Println(*response.ResultObject.SubCode) fmt.Println(*response.ResultObject.MaterialInfo) // 通过以下代码关闭资源。 file.Close() }
说明
Credentials工具配置方法,请参见身份验证配置。
反馈
- 本页导读