文档

Go SDK调用示例

更新时间:

本文介绍了卡证核身方案纯服务端集成的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工具配置方法,请参见身份验证配置

  • 本页导读
文档反馈