文档

Go SDK调用示例

更新时间:

本文介绍Go SDK集成纯服务端认证方案的操作方法。

SDK使用说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口。该工具会自动生成相应API的SDK调用示例代码,详细信息,请参见调试ContrastSmartVerify接口

前提条件

  • 需要使用的Go版本在1.12.0版本及以上。

  • 已添加认证场景,并获取对应的场景ID。具体操作,请参见添加认证场景

引入依赖包

go get github.com/alibabacloud-go/tea-rpc
go get github.com/alibabacloud-go/tea-utils
go get github.com/alibabacloud-go/tea
go get -u github.com/aliyun/credentials-go
说明

Credentials工具配置方法,请参见身份验证配置

安装SDK

关于Go SDK源代码,请参见Go SDK包

通过Go mod来管理项目依赖:

go get github.com/alibabacloud-go/cloudauth-20200618@vv1.0.4

调用示例

  • 方式一:不使用本地图片示例

    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/alibabacloud-go/tea/tea"
      "github.com/aliyun/credentials-go/credentials"
    )
    
    
    func CreateClient (endpoint *string) (_result *cloudauth.Client, _err error) {
      //阿里云账号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 := &openapi.Config{
    		// 使用Credential配置凭证。
    		Credential: credential,
    		Endpoint:   endpoint,
    		// 设置HTTP代理。
    		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
    		// 设置HTTPS代理。
    		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
    	}
    	//_result = &cloudauth.Client{}
    	_result, _err = cloudauth.NewClient(config)
    	return _result, _err
    }
    
    func _main () (_err error) {
      request := &cloudauth.ContrastSmartVerifyRequest{
        // 请输入场景ID。
        SceneId: tea.Int64(xxx),
        OuterOrderNo: tea.String("商户请求的唯一标识"),
        // 增强版实人认证的业务场景类型。取值:
        // CERT_SAFE:纯认证模式。
        // CERT_PHOTO_SAFE:认证及照片防翻拍检测模式。
        // MARKET_SAFE:营销安全(包含认证、防翻拍和营销风险识别功能)。
        // FINANCE_SAFE:金融安全(包含认证、防翻拍和金融风险识别功能)。
        // ACCOUNT_SAFE:注册安全(包含认证、防翻拍和注册风险识别功能)。
        Mode: tea.String("CERT_SAFE"),
        // 固定值IDENTITY_CARD。
        CertType: tea.String("IDENTITY_CARD"),
        CertName: tea.String("xxx"),
        CertNo: tea.String("xxx"),
        // 公网可以访问的HTTP、HTTPS链接。
        FacePicUrl: tea.String("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"),
        // 使用图片Base64编码方式。
        // FacePicString: tea.String("xxxxx"),
        // Ip: tea.String("用户IP地址"),
        // UserId: tea.String("用户ID"),
        // 当Mode取值为MARKET_SAFE、FINANCE_SAFE或ACCOUNT_SAFE时,Mobile为必填字段。
        // Mobile: tea.String("130xxxxxxxx"),
      }
      response, _err := contrastSmartVerifyAutoRoute(request)
      // 不支持服务自动路由。
      // response, _err := contrastSmartVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
      if _err != nil {
        return _err
      }
    
      fmt.Println(*response.RequestId)
      fmt.Println(*response.Code)
      fmt.Println(*response.Message)
      fmt.Println(*response.ResultObject.Passed)
      fmt.Println(*response.ResultObject.SubCode)
      fmt.Println(*response.ResultObject.VerifyInfo)
      fmt.Println(*response.ResultObject.RiskInfo)
    
      return _err
    }
    
    func contrastSmartVerifyAutoRoute (request *cloudauth.ContrastSmartVerifyRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) {
      endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
      var lastResponse *cloudauth.ContrastSmartVerifyResponse
      for _, endpoint := range endpoints {
        response, _err := contrastSmartVerify(endpoint, request)
        if _err != nil {
          var err = &tea.SDKError{}
          if _t, ok := _err.(*tea.SDKError); ok {
            err = _t
            // 网络异常,切换到下个区域调用。
            if tea.BoolValue(util.EqualString(tea.String("ServiceUnavailable"), err.Code)) {
              continue
            }
          }
          return _result, _err
        }
    
        if tea.BoolValue(util.EqualString(tea.String("500"), response.Code)) {
          continue
        }
    
        _result = response
        return _result, _err
    
      }
      _result = lastResponse
      return _result, _err
    }
    
    func contrastSmartVerify (endpoint *string, request *cloudauth.ContrastSmartVerifyRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) {
      client, _err := CreateClient(endpoint)
      if _err != nil {
        return _result, _err
      }
    
      // 创建RuntimeObject实例并设置运行参数。
      runtime := &util.RuntimeOptions{}
      runtime.ReadTimeout = tea.Int(10000)
      runtime.ConnectTimeout = tea.Int(10000)
      _result = &cloudauth.ContrastSmartVerifyResponse{}
      _body, _err := client.ContrastSmartVerify(request, runtime)
      if _err != nil {
        return _result, _err
      }
      _result = _body
      return _result, _err
    }
    
    
    func main() {
      err := _main()
      if err != nil {
        panic(err)
      }
    }
  • 方式二:使用本地图片示例

    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/alibabacloud-go/tea/tea"
      "github.com/aliyun/credentials-go/credentials"
      "os"
    )
    
    
    func CreateClient (endpoint *string) (_result *cloudauth.Client, _err error) {
      //阿里云账号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 := &openapi.Config{
    		// 使用Credential配置凭证。
    		Credential: credential,
    		Endpoint:   endpoint,
    		// 设置HTTP代理。
    		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
    		// 设置HTTPS代理。
    		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
    	}
    	//_result = &cloudauth.Client{}
    	_result, _err = cloudauth.NewClient(config)
    	return _result, _err
    }
    
    func _main () (_err error) {
      f, err := os.Open("/xxx.png")
      if err != nil {
        return err
      }
      request := &cloudauth.ContrastSmartVerifyAdvanceRequest{
        // 请输入场景ID。
        SceneId: tea.Int64(xxx),
        OuterOrderNo: tea.String("商户请求的唯一标识"),
        // 增强版实人认证的业务场景类型。取值:
        // CERT_SAFE:纯认证模式。
        // CERT_PHOTO_SAFE:认证及照片防翻拍检测模式。
        // MARKET_SAFE:营销安全(包含认证、防翻拍和营销风险识别功能)。
        // FINANCE_SAFE:金融安全(包含认证、防翻拍和金融风险识别功能)。
        // ACCOUNT_SAFE:注册安全(包含认证、防翻拍和注册风险识别功能)。
        Mode: tea.String("CERT_PHOTO_SAFE"),
        // 固定值IDENTITY_CARD。
        CertType: tea.String("IDENTITY_CARD"),
        CertName: tea.String("xxx"),
        CertNo: tea.String("xxx"),
        // Ip: tea.String("用户IP地址"),
        // UserId: tea.String("用户ID"),
        // 当Mode取值为MARKET_SAFE、FINANCE_SAFE或ACCOUNT_SAFE时,Mobile为必填字段。
        // Mobile: tea.String("130xxxxxxxx"),
        FacePicFileObject: f,
      }
      response, _err := contrastSmartVerifyAdvanceAutoRoute(request)
      // 不支持服务自动路由。
      // response, _err := contrastSmartVerifyAdvance(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
      f.Close()
      if _err != nil {
        return _err
      }
    
      fmt.Println(*response.RequestId)
      fmt.Println(*response.Code)
      fmt.Println(*response.Message)
      fmt.Println(*response.ResultObject.Passed)
      fmt.Println(*response.ResultObject.SubCode)
      fmt.Println(*response.ResultObject.VerifyInfo)
      fmt.Println(*response.ResultObject.RiskInfo)
    
      return _err
    }
    
    func contrastSmartVerifyAdvanceAutoRoute (request *cloudauth.ContrastSmartVerifyAdvanceRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) {
      endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
      var lastResponse *cloudauth.ContrastSmartVerifyResponse
      for _, endpoint := range endpoints {
        response, _err := contrastSmartVerifyAdvance(endpoint, request)
        if _err != nil {
          var err = &tea.SDKError{}
          if _t, ok := _err.(*tea.SDKError); ok {
            err = _t
            // 网络异常,切换到下个区域调用。
            if tea.BoolValue(util.EqualString(tea.String("ServiceUnavailable"), err.Code)) {
              continue
            }
          }
          return _result, _err
        }
    
        if tea.BoolValue(util.EqualString(tea.String("500"), response.Code)) {
          continue
        }
    
        _result = response
        return _result, _err
    
      }
      _result = lastResponse
      return _result, _err
    }
    
    func contrastSmartVerifyAdvance (endpoint *string, request *cloudauth.ContrastSmartVerifyAdvanceRequest) (_result *cloudauth.ContrastSmartVerifyResponse, _err error) {
      client, _err := CreateClient(endpoint)
      if _err != nil {
        return _result, _err
      }
    
      // 创建RuntimeObject实例并设置运行参数。
      runtime := &util.RuntimeOptions{}
      runtime.ReadTimeout = tea.Int(10000)
      runtime.ConnectTimeout = tea.Int(10000)
      _result = &cloudauth.ContrastSmartVerifyResponse{}
      _body, _err := client.ContrastSmartVerifyAdvance(request, runtime)
      if _err != nil {
        return _result, _err
      }
      _result = _body
      return _result, _err
    }
    
    
    func main() {
      err := _main()
      if err != nil {
        panic(err)
      }
    }
  • 本页导读
文档反馈