文档

凭证核验服务

更新时间:

本文介绍凭证核验服务的API接口。

接口信息

  • 接口名称:CredentialVerify。

  • 服务地址:cloudauth.aliyuncs.com(IPv4)或cloudauth-dualstack.aliyuncs.com(IPv6)。

  • 请求方法:POST和GET。

  • 传输协议:HTTPS。

  • 接口说明:传入凭证图片信息,返回是否伪造、篡改等。检测风险包括:PS篡改、翻拍、截屏、打印复印、水印等。

请求参数

参数imageUrlimageContext对应的图片必须符合以下规则:

  • 图片格式:支持PNG、JPG、JPEG、BMP和WebP格式。

  • 图片尺寸:图片长宽需要大于15像素,小于8192像素,且长宽比需要小于50。

    说明

    为了确保较好的识别效果,建议图像的长宽均大于500像素。

  • 图片大小:图片二进制文件不能超过10 MB。

    说明

    图片过大会影响接口响应速度,建议使用小于 1.5MB图片。

名称

类型

是否必选

描述

示例值

CredType

String

凭证类型:

  • 01:个人卡证类

  • 02:经营场景类

  • 03:企业资质类

02

CredName

String

  • 01:个人卡证类

    • 0101:身份证

    • 0102:银行卡

    • 0104:教师资格证

    • 0107:学生证

  • 02:经营场景类

    • 0201:门头照

    • 0202:柜台照

    • 0203:场景照

  • 03:企业资质类

    • 0301:工商营业执照

0201

imageUrl

String

说明

imageUrl与imageContext任选一个。

图片的地址。

imageContext

String

图⽚的Base64编码。

/9j/4AAQSkZJRgABAQAASxxxxxxx

MerchantId

String

商户编号。CredName取值02时,此字段需要输入。

UserName

String

姓名。

张三

IdentifyNum

String

身份证号码。

142702******

CertNum

String

相关证书编号。

响应参数

名称

类型

描述

示例值

RequestId

String

请求ID。

130A2C10-B9EE-4D84-88E3-5384FF039795

Message

String

返回信息。

success

Code

String

返回码。

200为成功,其他为失败。

200

ResultObject

Object

无。

Result

String

  • 0:低风险。

  • 1:高风险。

  • 2:可疑。

1

RiskTag

String

风险标签,多个标签用英文逗号隔开,包括:

  • PS:图片PS。

  • SCREEN_PHOTO:屏幕翻拍。

  • SCREENSHOT:屏幕截屏。

  • WATERMARK:水印。

  • COLOR_PRINT:彩打复印。

  • SAME_FACE:人脸相似。

  • SAME_BACKGROUND:背景相似。

  • ORIGINAL_PHOTO:非原始图。

PS

RiskScore

Map<String,String>

风险分值。

{

"PS": "0.0211",

"SCREEN_PHOTO": "0.0101",

"SCREENSHOT": "0.0521",

"WATERMARK": "0.0001",

"COLOR_PRINT": "0.0210",

"SAME_FACE": "0.0012",

"SAME_BACKGROUND": "0.0861"

}

MaterialInfo

String

其他信息,JSON格式。

{

"sameBackgroundDetail": {

// 相似背景对于的原始图请求RequestId

"originalRequestId": "130A2C10-B9EE-4D84-88E3-5384FF03****";

// 相似背景对于的原始图请求商户ID

"originalMerchantId": "xxxxxxxx"

}

}

返回码

Code

Message

描述

200

success

成功。

400

参数不能为空

参数不能为空。

401

参数非法

非法参数。

402

权威源服务异常

权威源服务异常。

405

图片格式不正确

图片格式或大小不符合要求。

410

未开通服务

产品未开通。

411

RAM无权限

RAM用户无权限,请授权AliyunYundunCloudAuthFullAccess

412

欠费中

产品欠费,请充值后操作。

500

系统错误

系统内部错误。

SDK​调用示例

以下为您介绍不同语言SDK的调用示例。

Java

在pom.xml中添加如下依赖,即可在Maven工程中使用SDK。

  • Java SDK依赖。以下依赖版本仅供参考,建议在实际配置时获取最新依赖版本

    <dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>cloudauth20190307</artifactId>
     <version>2.6.0</version>
    </dependency>
  • 身份验证依赖。如何配置环境变量,请参见管理访问凭据

    <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>credentials-java</artifactId>
       <version>LATEST</version>
    </dependency>

示例:

import com.aliyun.cloudauth20190307.Client;
import com.aliyun.cloudauth20190307.models.CredentialVerifyRequest;
import com.aliyun.cloudauth20190307.models.CredentialVerifyResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

import java.util.Arrays;
import java.util.List;

public class CredentialVerify {
    public static void main(String[] args) throws Exception {

        // 通过以下代码创建API请求并设置参数。
        CredentialVerifyRequest request = new CredentialVerifyRequest();

        request.setCredType("02");
        request.setCredName("0201");
        request.setImageUrl("https://xxx.xxx.xxx.xxx");
        request.setIsOCR("0");

        // 推荐,支持服务路由。
        CredentialVerifyResponse response = credentialVerifyAutoRoute(request);

        // 不支持服务自动路由。
        //CredentialVerifyResponse response = credentialVerify("cloudauth.cn-shanghai.aliyuncs.com", request);

        System.out.println(response.getBody().getRequestId());
        System.out.println(response.getBody().getCode());
        System.out.println(response.getBody().getMessage());
        System.out.println(response.getBody().getResultObject() == null ? null
                : response.getBody().getResultObject().getResult());
        System.out.println(response.getBody().getResultObject() == null ? null
                : response.getBody().getResultObject().getRiskTag());
    }

    private static CredentialVerifyResponse credentialVerifyAutoRoute(CredentialVerifyRequest request) {
        // 第一个为主区域Endpoint,第二个为备区域Endpoint。
        List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
        CredentialVerifyResponse lastResponse = null;
        for (int i=0; i<endpoints.size(); i++) {
            try {
                CredentialVerifyResponse response = credentialVerify(endpoints.get(i), request);
                lastResponse = response;

                // 服务端错误,切换到下个区域调用。
                if(response != null){
                    if(500 == response.getStatusCode()){
                        continue;
                    }
                    if(response.getBody() != null){
                        if("500".equals(response.getBody().getCode())){
                            continue;
                        }
                    }
                }

                return response;
            } catch (Exception e) {
                e.printStackTrace();
                if(i == endpoints.size()-1){
                    throw new RuntimeException(e);
                }
            }
        }

        return lastResponse;
    }

    private static CredentialVerifyResponse credentialVerify(String endpoint, CredentialVerifyRequest request)
            throws Exception {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        Config config = new Config();
        config.setCredential(credentialClient);
        config.setEndpoint(endpoint);
        // 设置http代理。
        //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
        // 设置https代理。
        //config.setHttpsProxy("http://xx.xx.xx.xx:xxxx");
        Client client = new Client(config);

        // 创建RuntimeObject实例并设置运行参数。
        RuntimeOptions runtime = new RuntimeOptions();
        runtime.readTimeout = 5000;
        runtime.connectTimeout = 5000;

        return client.credentialVerifyWithOptions(request, runtime);
    }
}

PHP

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

  • 通过Composer来管理项目依赖(推荐)

    composer require alibabacloud/cloudauth-20190307 2.6.0
  • 使用composer.json文件

    {
       "require": {
           "alibabacloud/cloudauth-20190307": "2.6.0"
        }
    }

示例:

<?php


namespace AlibabaCloud\SDK\Sample\Verify\Id;

use AlibabaCloud\Credentials\Credential; 
use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\CredentialVerifyRequest;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\CredentialVerifyResponse;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Exception;

class CredentialVerify
{
    /**
     * createClient
     * @param string $endpoint
     * @return Cloudauth
     */
    public static function createClient(string $endpoint): Cloudauth
    {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/document_detail/311677.html。 
        $credential = new Credential([]);
        $config = new Config([
			  // 使用credential配置凭证
    		    "credential" => $credential,
            // 设置HTTP代理。
            // "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
            // 设置HTTPS代理
            // "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
            "endpoint" => $endpoint

        ]);
        return new Cloudauth($config);
    }

    /**
     * @return void
     */
    public static function main(){
        $request = new CredentialVerifyRequest([
            "credType" => "02",
            "credName" => "0201",
            "imageUrl" => "https://xxx.xxx.xxx.xxx",
            "isOCR" => "0"
        ]);
        // 推荐,支持服务路由。
        $response = self::credentialVerifyyAutoRoute($request);
        // 不支持服务自动路由。
        // $response = self::credentialVerify("cloudauth.cn-shanghai.aliyuncs.com", $request);
        var_dump($response->body->requestId);
        var_dump($response->body->code);
        var_dump($response->body->message);
        var_dump($response->body->resultObject->result);
        var_dump($response->body->resultObject->riskTag);
    }

    /**
     * credentialVerifyAutoRoute
     * @param CredentialVerifyRequest $request
     * @return CredentialVerifyResponse|null
     */
    public static function credentialVerifyAutoRoute(CredentialVerifyRequest $request): ?CredentialVerifyResponse
    {
        $endpoints = [
            "cloudauth.cn-shanghai.aliyuncs.com",
            "cloudauth.cn-beijing.aliyuncs.com"
        ];
        foreach($endpoints as $endpoint){
            try {
                $response = self::credentialVerify($endpoint, $request);
                if (Utils::equalNumber(500, $response->statusCode)) {
                    continue;
                }
                if(Utils::equalString("500", $response->body->code)){
                    continue;
                }
                return $response;
            }
            catch (Exception $err) {
                var_dump($err -> getCode());
                var_dump($err -> getMessage());
            }
        }
        return null;
    }

    /**
     * credentialVerify
     * @param string $endpoint
     * @param CredentialVerifyRequest $request
     * @return CredentialVerifyResponse
     */
    public static function credentialVerify(string $endpoint, CredentialVerifyRequest $request): CredentialVerifyResponse
    {
        $client = self::createClient($endpoint);
        // 创建RuntimeObject实例并设置运行参数。
        $runtime = new RuntimeOptions([]);
        $runtime->readTimeout = 5000;
        $runtime->connectTimeout = 5000;
        return $client->credentialVerifyWithOptions($request, $runtime);
    }
}

$path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
CredentialVerify::main();
说明

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

Python

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

引入依赖并安装SDK:

pip install alibabacloud_tea_openapi==0.3.8
pip install alibabacloud_credentials==0.3.1
pip install alibabacloud_cloudauth20190307==2.6.0
说明

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

示例:

from alibabacloud_cloudauth20190307.client import Client as CloudauthClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_cloudauth20190307 import models as cloudauth_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_tea_util import models as util_models
from alibabacloud_credentials.client import Client as CredClient


class CredentialVerify:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
            endpoint: str,
    ) -> CloudauthClient:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/zh/sdk/developer-reference/configure-credentials。
        cred=CredClient()
        config = open_api_models.Config(
        credential=cred,
        # 设置HTTP代理。
        # http_proxy='http://xx.xx.xx.xx:xxxx',
        # 设置HTTPS代理。
        # https_proxy='https://username:password@xxx.xxx.xxx.xxx:9999',
        endpoint=endpoint
        )
        return CloudauthClient(config)

    @staticmethod
    def main() -> None:
        request = cloudauth_models.CredentialVerifyRequest(
            cred_type='02',
            cred_name = "0201",
            image_url = "https://xxx.xxx.xxx.xxx"
        )
        response = CredentialVerify.credential_verify_auto_route(request)
        # 不支持服务自动路由。
        # response = CredentialVerify.credential_verify('cloudauth.cn-shanghai.aliyuncs.com', request)
        print(response.body.request_id)
        print(response.body.code)
        print(response.body.message)
        print(response.body.result_object.result)
        print(response.body.result_object.risk_tag)

    @staticmethod
    def credential_verify_auto_route(
            request: cloudauth_models.CredentialVerifyRequest,
    ) -> cloudauth_models.CredentialVerifyResponse:
        endpoints = [
            'cloudauth.cn-shanghai.aliyuncs.com',
            'cloudauth.cn-beijing.aliyuncs.com'
        ]
        for endpoint in endpoints:
            try:
                response = CredentialVerify.credential_verify(endpoint, request)
                if UtilClient.equal_number(500, response.status_code):
                    continue
                if response is not None and response.body is not None:
                    if UtilClient.equal_string("500", response.body.code):
                        continue
                return response
            except Exception as err:
                print(err)
                continue
        return None

    @staticmethod
    def credential_verify(
            endpoint: str,
            request: cloudauth_models.CredentialVerifyRequest,
    ) -> cloudauth_models.CredentialVerifyResponse:
        client = CredentialVerify.create_client(endpoint)
        # 创建RuntimeObject实例并设置运行参数。
        runtime = util_models.RuntimeOptions()
        runtime.read_timeout = 5000
        runtime.connect_timeout = 5000
        return client.credential_verify_with_options(request, runtime)


if __name__ == '__main__':
    CredentialVerify.main()
            

Go

引入Credentials工具并安装SDK:

go get -u github.com/aliyun/credentials-go
go get github.com/alibabacloud-go/cloudauth-20190307/v3
说明

Credentials工具配置方法,请参见管理访问凭证

示例:

package main

import (
	"fmt"
	cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v3/client"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	util "github.com/alibabacloud-go/tea-utils/v2/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.CredentialVerifyRequest{
		CredType: tea.String("02"),
		CredName: tea.String("0201"),
		ImageUrl: tea.String("https://xxx.xxx.xxx.xxx"),
        IsOCR: tea.String("0")
	}
	response, _err := CredentialVerifyAutoRoute(request)
	// 不支持服务自动路由。
	// response, _err := CredentialVerify(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.ResultObject.Result)
    fmt.Println(*response.Body.ResultObject.RiskTag)
	return _err
}

func CredentialVerifyAutoRoute (request *cloudauth.CredentialVerifyRequest) (_result *cloudauth.CredentialVerifyResponse, _err error) {
	endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
	var lastResponse *cloudauth.CredentialVerifyResponse
	for _, endpoint := range endpoints {
		response, _err := CredentialVerify(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 CredentialVerify (endpoint *string, request *cloudauth.CredentialVerifyRequest) (_result *cloudauth.CredentialVerifyResponse, _err error) {
	client, _err := CreateClient(endpoint)
	if _err != nil {
		return _result, _err
	}

	// 创建RuntimeObject实例并设置运行参数。
	runtime := &util.RuntimeOptions{}
	runtime.ReadTimeout = tea.Int(5000)
	runtime.ConnectTimeout = tea.Int(5000)
	_result = &cloudauth.CredentialVerifyResponse{}
	_body, _err := client.CredentialVerifyWithOptions(request, runtime)
	if _err != nil {
		return _result, _err
	}
	_result = _body
	return _result, _err
}


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

.NET

引入依赖并安装SDK:

  • 方式一:通过.NET命令行安装。

    dotnet add package AlibabaCloud.SDK.Cloudauth20190307 --version 2.6.0
    dotnet add package Aliyun.Credentials
  • 方式二:使用包管理安装。

    Install-Package AlibabaCloud.SDK.Cloudauth20190307 -Version 2.6.0
    Install-Package Aliyun.Credentials
说明

Credentials工具配置方法,请参见管理访问凭证

示例:

using System;

using System.Collections.Generic;
using Tea;


namespace CredentialVerify
{
    public class Program
    {

        public static AlibabaCloud.SDK.Cloudauth20190307.Client CreateClient(string endpoint)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
               Credential=new Aliyun.Credentials.Client(null)
            };
  					config.Endpoint = endpoint;
            return new AlibabaCloud.SDK.Cloudauth20190307.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyRequest
            {
                CredType = "02",
                CredName = "0201",
                ImageUrl = "https://xxx.xxx.xxx.xxx",
                IsOCR = "0"
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyResponse response = CredentialVerifyAutoRoute(request);
            // 不支持服务自动路由。
            //AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyResponse response = CredentialVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
            Console.WriteLine(response.Body.RequestId);
            Console.WriteLine(response.Body.Code);
            Console.WriteLine(response.Body.Message);
            Console.WriteLine(response.Body.ResultObject.Result);
            Console.WriteLine(response.Body.ResultObject.RiskTag);
        }


        public static AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyResponse CredentialVerifyAutoRoute(AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyRequest request)
        {
            List<string> endpoints = new List<string>
            {
                "cloudauth.cn-shanghai.aliyuncs.com",
                "cloudauth.cn-beijing.aliyuncs.com"
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyResponse lastResponse = null;

            foreach (var endpoint in endpoints)
            {
                try
                {
                    AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyResponse response = CredentialVerify(endpoint, request);
                    lastResponse = response;
                    if (response is not null)
                    {
                        if (AlibabaCloud.TeaUtil.Common.EqualNumber(500, (int)(response.StatusCode)))
                        {
                            continue;
                        }

                        if (response.Body is not null)
                        {
                            if (AlibabaCloud.TeaUtil.Common.EqualString("500", response.Body.Code))
                            {
                                continue;
                            }
                        }
                    }
                    return response;
                }
                catch (TeaException err)
                {
                    Console.WriteLine(err);
                    // 网络异常,切换到下个区域调用。
                    if (AlibabaCloud.TeaUtil.Common.EqualString("ServiceUnavailable", err.Code))
                    {
                        continue;
                    }
                }
                catch (Exception _err)
                {
                    Console.WriteLine(_err);
                    continue;
                }
            }
            return lastResponse;
        }

        public static AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyResponse CredentialVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.CredentialVerifyRequest request)
        {
            AlibabaCloud.SDK.Cloudauth20190307.Client client = CreateClient(endpoint);
            // 创建RuntimeObject实例并设置运行参数。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 5000;
            runtime.ConnectTimeout = 5000;
            return client.CredentialVerifyWithOptions(request, runtime);
        }
    }
}

Node.js

引入依赖并安装SDK:

npm install @alicloud/tea-util
npm install @alicloud/openapi-client
npm install @alicloud/cloudauth20190307@2.5.0
npm install @alicloud/credentials
说明

Credentials工具配置方法,请参见管理访问凭证

示例:

const Config = require("@alicloud/openapi-client");
const CloudAuth = require("@alicloud/cloudauth20190307");
const CloudAuthClient = CloudAuth.default;
const {RuntimeOptions} = require("@alicloud/tea-util");
const { default: Credential } = require('@alicloud/credentials');

function createClient(endpoint) {
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
    const cred = new Credential();
    const config = new Config.Config({
    credential: cred,
    // 设置Endpoint。
    endpoint: endpoint,
    // 设置HTTP代理。
    // httpProxy: "http://xxx.xxx.xxx.xxx:9999",
    // 设置HTTPS代理。
    // httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
  });
  return new CloudAuthClient(config);
}

async function credentialVerify(endpoint, request) {
    const client = createClient(endpoint);
    // 创建RuntimeObject实例并设置运行参数。
    const runtime = new RuntimeOptions([]);
    runtime.readTimeout=5000;
    runtime.connectTimeout=5000;
    return await client.credentialVerifyWithOptions(request, runtime);
}

async function credentialVerifyAutoRoute(request) {
    const endpoints = [
        "cloudauth.cn-shanghai.aliyuncs.com",
        "cloudauth.cn-beijing.aliyuncs.com"
    ];

    for (const endpoint of endpoints) {
        try {
            const response = await credentialVerify(endpoint, request);
            if (response.statusCode === 500) {
                continue;
            }
            if(response.body !== null){
                if(response.body.code === "500"){
                    continue;
                }
            }
            return response;
        } catch (err) {
            console.log(err);
            continue;
        }
    }
    return null;
}

async function main(){
    // 通过以下代码创建API请求并设置参数。
    const request = new CloudAuth.CredentialVerifyRequest({
        // 固定值。
        credType: "02",
        credName: "0201",
        imageUrl: "https://xxx.xxx.xxx.xxx",
        isOCR: "0",
    });

    // 推荐,支持服务路由。
    const response = await credentialVerifyAutoRoute(request);
    // 不支持服务自动路由。
    // const response = await credentialVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
   if (response){
    console.log(response.body.requestId);
    console.log(response.body.code);
    console.log(response.body.message);
    console.log(response.body.resultObject.result);
    console.log(response.body.resultObject.riskTag);
    }
}

main().then(function (response) {});
  • 本页导读