本文介绍了身份证核验的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
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
调用示例
关于参数的具体描述,请参见身份证核验初始化、身份证核验查询。
InitSmartVerify接口调用示例
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.InitSmartVerifyRequest{
// 请输入场景ID。
SceneId: tea.Int64(xxx),
OuterOrderNo: tea.String("商户请求的唯一标识"),
// 证件类型,固定值。
Mode: tea.String("OCR"),
CertType: tea.String("IDENTITY_CARD"),
// MetaInfo环境参数,需要通过客户端SDK获取。
MetaInfo: tea.String("{\"zimVer\":\"3.0.0\",\"appVersion\": \"1\",\"bioMetaInfo\": \"4.1.0:11501568,0\",\n \"appName\": \"com.aliyun.cloudauth\",\"deviceType\": \"ios\",\"osVersion\": \"iOS 10.3.2\",\"apdidToken\": \"\",\"deviceModel\": \"iPhone9,1\"}"),
// Mobile: tea.String("130xxxxxxxx"),
// Ip: tea.String("114.xxx.xxx.xxx"),
// UserId: tea.String("12345xxxx"),
// CallbackUrl: tea.String("https://www.aliyundoc.com"),
// CallbackToken: tea.String("xxxxxxx")
}
response, _err := InitSmartVerifyAutoRoute(request)
// 不支持服务自动路由。
// response, _err := InitSmartVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
if _err != nil {
return _err
}
if response != nil {
fmt.Println(*response.RequestId)
fmt.Println(*response.Code)
fmt.Println(*response.Message)
fmt.Println(*response.RequestId)
fmt.Println(*response.ResultObject.CertifyId)
}
return _err
}
func InitSmartVerifyAutoRoute(request *cloudauth.InitSmartVerifyRequest) (_result *cloudauth.InitSmartVerifyResponse, _err error) {
endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
var lastResponse *cloudauth.InitSmartVerifyResponse
for _, endpoint := range endpoints {
response, _err := InitSmartVerify(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 InitSmartVerify(endpoint *string, request *cloudauth.InitSmartVerifyRequest) (_result *cloudauth.InitSmartVerifyResponse, _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.InitSmartVerify(request, runtime)
if _err != nil {
return _result, _err
}
_result = _body
return _result, _err
}
func main() {
err := _main()
if err != nil {
panic(err)
}
}
DescribeSmartVerify接口调用示例
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.DescribeSmartVerifyRequest{
// 请输入场景ID。
SceneId: tea.Int64(xxx),
CertifyId: tea.String("91707dc296d469ad38e4c5efa6a0xxxx"),
}
response, _err := DescribeSmartVerifyAutoRoute(request)
// 不支持服务自动路由。
// response, _err := DescribeSmartVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
if _err != nil {
return _err
}
if response != nil {
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.MaterialInfo);
fmt.Println(*response.ResultObject.PassedScore);
}
return _err
}
func DescribeSmartVerifyAutoRoute(request *cloudauth.DescribeSmartVerifyRequest) (_result *cloudauth.DescribeSmartVerifyResponse, _err error) {
endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
var lastResponse *cloudauth.DescribeSmartVerifyResponse
for _, endpoint := range endpoints {
response, _err := DescribeSmartVerify(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 DescribeSmartVerify(endpoint *string, request *cloudauth.DescribeSmartVerifyRequest) (_result *cloudauth.DescribeSmartVerifyResponse, _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.DescribeSmartVerify(request, runtime)
if _err != nil {
return _result, _err
}
_result = _body
return _result, _err
}
func main() {
err := _main()
if err != nil {
panic(err)
}
}
文档内容是否对您有帮助?