本文介绍金融级多因子意愿认证服务端接入的Go SDK调用示例。

SDK使用说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口,该工具会自动生成相应API的SDK调用示例代码。您可以单击以下接口链接进行调试:

前提条件

  • 仅支持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

安装SDK

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

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

go get github.com/alibabacloud-go/cloudauth-20190307/v3@v3.0.1

调用示例

InitFaceVerify接口调用示例

关于参数的具体描述,请参见InitFaceVerify

package main

import (
    "fmt"
    cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v2/client"
    openapi "github.com/alibabacloud-go/darabonba-openapi/client"
    util "github.com/alibabacloud-go/tea-utils/service"
    "github.com/alibabacloud-go/tea/tea"
)


func CreateClient (endpoint *string) (_result *cloudauth.Client, _err error) {
    config := &openapi.Config{
        // 您的AccessKey ID。
        AccessKeyId: tea.String("您的AccessKey ID"),
        // 您的AccessKey Secret。
        AccessKeySecret: tea.String("您的AccessKey Secret"),
        // 设置HTTP代理。
        // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        // 设置HTTPS代理。
        // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
        Endpoint: endpoint,
    }
    _result = &cloudauth.Client{}
    _result, _err = cloudauth.NewClient(config)
    return _result, _err
}

func _main () (_err error) {
    request := &cloudauth.InitFaceVerifyRequest{
        // 固定值。
        ProductCode: tea.String("MFVC"),
        // 请输入场景ID。
        SceneId: tea.Int64(xxx),
        OuterOrderNo: tea.String("商户请求的唯一标识"),
        UserId: tea.String("用户ID"),
        // 固定值IDENTITY_CARD。
        CertType: tea.String("IDENTITY_CARD"),
        CertName: tea.String("xxx"),
        CertNo: tea.String("xxx"),
        MetaInfo: tea.String("{\"zimVer\":\"3.0.0\",\"appVersion\": \"1\",\"bioMetaInfo\": \"4.1.0:11501568,0\",\"appName\": \"com.aliyun.antcloudauth\",\"deviceType\": \"ios\",\"osVersion\": \"iOS 10.3.2\",\"apdidToken\": \"\",\"deviceModel\": \"iPhone9,1\"}"),
        // Ip: tea.String("用户IP地址"),
        // Mobile: tea.String("1390000****"),
        // CallbackUrl: tea.String("https://www.aliyundoc.com"),
        // CallbackToken: tea.String("xxxxxxx")
    }
    response, _err := InitFaceVerifyAutoRoute(request)
    // 不支持服务自动路由。
    // response, _err := InitFaceVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
    if _err != nil {
        return _err
    }

    fmt.Println(*response.Body.RequestId)
    fmt.Println(*response.Body.Code)
    fmt.Println(*response.Body.Message)
    fmt.Println(*response.Body.RequestId)
    fmt.Println(*response.Body.ResultObject.CertifyId)
    return _err
}

func InitFaceVerifyAutoRoute (request *cloudauth.InitFaceVerifyRequest) (_result *cloudauth.InitFaceVerifyResponse, _err error) {
    endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
    var lastResponse *cloudauth.InitFaceVerifyResponse
    for _, endpoint := range endpoints {
        response, _err := InitFaceVerify(endpoint, request)
        lastResponse = response
        if _err != nil {
            var err = &tea.SDKError{}
            if _t, ok := _err.(*tea.SDKError); ok {
                err = _t
                // 系统异常,切换到下个地域调用。
                if *err.StatusCode == 500 {
                    continue
                }
            }
            return _result, _err
        }

        if *response.StatusCode == 500 {
            continue
        }

        if *response.Body.Code == "500"{
            continue
        }

        _result = response
        return _result, _err

    }
    _result = lastResponse
    return _result, _err
}

func InitFaceVerify (endpoint *string, request *cloudauth.InitFaceVerifyRequest) (_result *cloudauth.InitFaceVerifyResponse, _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.InitFaceVerifyResponse{}
    _body, _err := client.InitFaceVerifyWithOptions(request, runtime)
    if _err != nil {
        return _result, _err
    }
    _result = _body
    return _result, _err
}


func main() {
    err := _main()
    if err != nil {
        panic(err)
    }
}

DescribeFaceVerify接口调用示例

关于参数的具体描述,请参见DescribeFaceVerify

package main

import (
    "fmt"
    cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v2/client"
    openapi "github.com/alibabacloud-go/darabonba-openapi/client"
    util "github.com/alibabacloud-go/tea-utils/service"
    "github.com/alibabacloud-go/tea/tea"
)

func CreateClient(endpoint *string) (_result *cloudauth.Client, _err error) {
    config := &openapi.Config{
        // 您的AccessKey ID。
        AccessKeyId: tea.String("您的AccessKey ID"),
        // 您的AccessKey Secret。
        AccessKeySecret: tea.String("您的AccessKey Secret"),
        Endpoint:        endpoint,
        // 设置HTTP代理。
        // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
        // 设置HTTPS代理。
        // HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
    }
    _result = &cloudauth.Client{}
    _result, _err = cloudauth.NewClient(config)
    return _result, _err
}

func _main() (_err error) {
    request := &cloudauth.DescribeFaceVerifyRequest{
        // 请输入场景ID。
        SceneId:   tea.Int64(xxx),
        CertifyId: tea.String("91707dc296d469ad38e4c5efa6a0xxxx"),
    }
    response, _err := DescribeFaceVerifyAutoRoute(request)

    // 不支持服务自动路由。
    // response, _err := DescribeFaceVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)

    if _err != nil {
        return _err
    }

    if response != nil {
        fmt.Println(*response.Body.RequestId)
        fmt.Println(*response.Body.Code)
        fmt.Println(*response.Body.Message)
        fmt.Println(*response.Body.RequestId)
        fmt.Println(*response.Body.ResultObject.Passed)
        fmt.Println(*response.Body.ResultObject.SubCode)
        fmt.Println(*response.Body.ResultObject.MaterialInfo)
        fmt.Println(*response.Body.ResultObject.IdentityInfo)
        fmt.Println(*response.Body.ResultObject.DeviceToken)
    }

    return _err
}

func DescribeFaceVerifyAutoRoute(request *cloudauth.DescribeFaceVerifyRequest) (_result *cloudauth.DescribeFaceVerifyResponse, _err error) {
    endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
    var lastResponse *cloudauth.DescribeFaceVerifyResponse
    for _, endpoint := range endpoints {
        response, _err := DescribeFaceVerify(endpoint, request)
        lastResponse = response
        if _err != nil {
            var err = &tea.SDKError{}
            if _t, ok := _err.(*tea.SDKError); ok {
                err = _t
                // 系统异常,切换到下个地域调用。
                if *err.StatusCode == 500 {
                    continue
                }
            }
            return _result, _err
        }

        if *response.StatusCode == 500 {
            continue
        }

        if *response.Body.Code == "500"{
            continue
        }

        _result = response
        return _result, _err

    }
    _result = lastResponse
    return _result, _err
}

func DescribeFaceVerify(endpoint *string, request *cloudauth.DescribeFaceVerifyRequest) (_result *cloudauth.DescribeFaceVerifyResponse, _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)

    _body, _err := client.DescribeFaceVerifyWithOptions(request, runtime)
    if _err != nil {
        return _result, _err
    }
    _result = _body
    return _result, _err
}

func main() {
    err := _main()
    if err != nil {
        panic(err)
    }
}