文档

手机号三要素核验详版

更新时间:

本文介绍手机号三要素详版API接口。

接口信息

  • 接口名:mobile3MetaDetailVerify。

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

  • 请求方法:POST和GET。

  • 传输协议:HTTPS。

  • 接口说明:传入手机号、姓名、身份证号,通过权威数据源验证其真实性和一致性,如果不一致,返回不一致的原因。

请求参数

名称

类型

是否必选

描述

示例值

ParamType

String

参数类型:

  • normal:不加密。

  • md5:md5加密。

normal

IdentifyNum

String

身份证号。

说明
  • 当paramType取值normal时,输入明文。

  • 当paramType取值md5时,输入32位小写md5字符串。

429001********8211

UserName

String

姓名。

说明
  • 当paramType取值normal时,输入明文。

  • 当paramType取值md5时,输入32位小写md5字符串。

张三

Mobile

String

手机号。

说明
  • 当paramType取值normal时,输入明文。

  • 当paramType取值md5时,输入32位小写md5字符串。

186****2055

响应参数

名称

类型

描述

示例值

RequestId

String

请求ID。

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

Message

String

返回信息。

success

Code

String

返回码。

200为成功,其他为失败。

200

ResultObject

Object

无​

BizCode

String

核验结果。

  • 1:校验⼀致 。

  • 2:校验不⼀致 。

  • 3:查⽆记录。

2

SubCode

String

核验详细结果。

  • 101:验证通过 。

  • 201:⼿机号和姓名不⼀致,⼿机号和证件号不⼀致 。

  • 202:⼿机号和姓名⼀致,⼿机号和证件号不⼀致 。

  • 203:⼿机号和证件号⼀致,⼿机号和姓名不⼀致 。

  • 204:其他不⼀致。

  • 301:查⽆记录 。

201

IspName

String

运营商名称。

  • CMCC:移动 。

  • CUCC:联通 。

  • CTCC:电信。

CMCC

​返回码

Code

Message

描述

200

success

成功。

400

参数不能为空

参数不能为空。

401

参数非法

非法参数。传入的姓名、身份证号码、手机号不符合规则。

402

权威源服务异常

权威源服务异常。

405

手机号不可查询

手机号不可查询,不支持的号段。

410

未开通服务

产品未开通。

411

RAM无权限

RAM用户无权限,请授权AliyunYundunCloudAuthFullAccess

412

欠费中

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

500

系统错误

系统内部错误。

SDK​调用示例

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

Java

使用Maven引入SDK:

<dependency>
 <groupId>com.aliyun</groupId>
 <artifactId>cloudauth20190307</artifactId>
 <version>2.1.0</version>
</dependency>

示例:

import com.aliyun.cloudauth20190307.Client;
import com.aliyun.cloudauth20190307.models.Mobile3MetaDetailVerifyRequest;
import com.aliyun.cloudauth20190307.models.Mobile3MetaDetailVerifyResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

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

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

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

        request.setParamType("normal");
        request.setUserName("张*");
        request.setIdentifyNum("18位身份证号");
        request.setMobile("131********");

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

        // 不支持服务自动路由。
        //Mobile3MetaDetailVerifyResponse response = mobile3MetaDetailVerify("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().getBizCode());
        System.out.println(response.getBody().getResultObject() == null ? null
                : response.getBody().getResultObject().getIspName());
        System.out.println(response.getBody().getResultObject() == null ? null
                : response.getBody().getResultObject().getSubCode());
    }

    private static Mobile3MetaDetailVerifyResponse mobile3MetaDetailVerifyAutoRoute(Mobile3MetaDetailVerifyRequest request) {
        // 第一个为主区域Endpoint,第二个为备区域Endpoint。
        List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
        Mobile3MetaDetailVerifyResponse lastResponse = null;
        for (int i=0; i<endpoints.size(); i++) {
            try {
                Mobile3MetaDetailVerifyResponse response = mobile3MetaDetailVerify(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 Mobile3MetaDetailVerifyResponse mobile3MetaDetailVerify(String endpoint, Mobile3MetaDetailVerifyRequest request)
            throws Exception {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
        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.mobile3MetaDetailVerifyWithOptions(request, runtime);
    }
}
说明

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

PHP

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

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

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

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

示例:

<?php


namespace AlibabaCloud\SDK\Sample\Verify\Id;

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

class Mobile3MetaDetailVerify
{
    /**
     * 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访问的身份验证。 
        $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 Mobile3MetaDetailVerifyRequest([
            "paramType" => "normal",
            "userName" => "张*",
            "identifyNum" => "411***************",
            "mobile" => "131********",                                   
        ]);
        // 推荐,支持服务路由。
        $response = self::mobile3MetaDetailVerifyAutoRoute($request);
        // 不支持服务自动路由。
        // $response = self::mobile3MetaDetailVerify("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->bizCode);
        var_dump($response->body->resultObject->ispName);
        var_dump($response->body->resultObject->subCode);
    }

    /**
     * mobile3MetaDetailVerifyAutoRoute
     * @param Mobile3MetaDetailVerifyRequest $request
     * @return Mobile3MetaDetailVerifyResponse|null
     */
    public static function mobile3MetaDetailVerifyAutoRoute(Mobile3MetaDetailVerifyRequest $request): ?Mobile3MetaDetailVerifyResponse
    {
        $endpoints = [
            "cloudauth.cn-shanghai.aliyuncs.com",
            "cloudauth.cn-beijing.aliyuncs.com"
        ];
        foreach($endpoints as $endpoint){
            try {
                $response = self::mobile3MetaDetailVerify($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;
    }

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

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

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

Python

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

引入依赖并安装SDK:

pip install alibabacloud_tea_openapi==0.2.5
pip install alibabacloud_credentials==0.3.2
pip install alibabacloud_cloudauth20190307==2.1.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 Mobile3MetaDetailVerify:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
            endpoint: str,
    ) -> CloudauthClient:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
        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.Mobile3MetaDetailVerifyRequest(
            param_type='normal',
            user_name='张x',
            identify_num='411***************',
            mobile='131********'
        )
        response = Mobile3MetaDetailVerify.mobile_3_meta_detail_verify_auto_route(request)
        # 不支持服务自动路由。
        # response = Mobile3MetaDetailVerify.mobile_3_meta_detail_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.biz_code)
        print(response.body.result_object.isp_name)
        print(response.body.result_object.sub_code)

    @staticmethod
    def mobile_3_meta_Detail_verify_auto_route(
            request: cloudauth_models.Mobile3MetaDetailVerifyRequest,
    ) -> cloudauth_models.Mobile3MetaDetailVerifyResponse:
        endpoints = [
            'cloudauth.cn-shanghai.aliyuncs.com',
            'cloudauth.cn-beijing.aliyuncs.com'
        ]
        for endpoint in endpoints:
            try:
                response = Mobile3MetaDetailVerify.mobile_3_meta_detail_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 mobile_3_meta_detail_verify(
            endpoint: str,
            request: cloudauth_models.Mobile3MetaDetailVerifyRequest,
    ) -> cloudauth_models.Mobile3MetaDetailVerifyResponse:
        client = Mobile3MetaDetailVerify.create_client(endpoint)
        # 创建RuntimeObject实例并设置运行参数。
        runtime = util_models.RuntimeOptions()
        runtime.read_timeout = 5000
        runtime.connect_timeout = 5000
        return client.mobile_3_meta_detail_verify_with_options(request, runtime)


if __name__ == '__main__':
    Mobile3MetaDetailVerify.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.Mobile3MetaDetailVerifyRequest{
		ParamType: tea.String("normal"),
		UserName: tea.String("张*"),
		IdentifyNum: tea.String("411***************"),
        Mobile: tea.String("131********"),
	}
	response, _err := Mobile3MetaDetailVerifyAutoRoute(request)
	// 不支持服务自动路由。
	// response, _err := Mobile3MetaDetailVerify(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.BizCode)
    fmt.Println(*response.Body.ResultObject.IspName)
    fmt.Println(*response.Body.ResultObject.SubCode)
	return _err
}

func Mobile3MetaDetailVerifyAutoRoute (request *cloudauth.Mobile3MetaDetailVerifyRequest) (_result *cloudauth.Mobile3MetaDetailVerifyResponse, _err error) {
	endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
	var lastResponse *cloudauth.Mobile3MetaDetailVerifyResponse
	for _, endpoint := range endpoints {
		response, _err := Mobile3MetaDetailVerify(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 Mobile3MetaDetailVerify (endpoint *string, request *cloudauth.Mobile3MetaDetailVerifyRequest) (_result *cloudauth.Mobile3MetaDetailVerifyResponse, _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.Mobile3MetaDetailVerifyResponse{}
	_body, _err := client.Mobile3MetaDetailVerifyWithOptions(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.1.0
    dotnet add package Aliyun.Credentials
  • 方式二:使用包管理安装。

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

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

示例:

using System;

using System.Collections.Generic;
using Tea;


namespace Mobile3MetaDetailVerify
{
    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.Mobile3MetaDetailVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.Mobile3MetaDetailVerifyRequest
            {
                ParamType = "normal",
                UserName = "张*",
                IdentifyNum = "411***************",
                Mobile = "131********"
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.Mobile3MetaDetailVerifyResponse response = Mobile3MetaDetailVerifyAutoRoute(request);
            // 不支持服务自动路由。
            //AlibabaCloud.SDK.Cloudauth20190307.Models.Mobile3MetaDetailVerifyResponse response = Mobile3MetaDetailVerify("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.BizCode);
        	Console.WriteLine(response.Body.ResultObject.IspName);
            Console.WriteLine(response.Body.ResultObject.SubCode);
        }


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

            foreach (var endpoint in endpoints)
            {
                try
                {
                    AlibabaCloud.SDK.Cloudauth20190307.Models.Mobile3MetaDetailVerifyResponse response = Mobile3MetaDetailVerify(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.Mobile3MetaDetailVerifyResponse Mobile3MetaDetailVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.Mobile3MetaDetailVerifyRequest 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.Mobile3MetaDetailVerifyWithOptions(request, runtime);
        }
    }
}

Node.js

引入依赖并安装SDK:

npm install @alicloud/tea-util
npm install @alicloud/openapi-client
npm install @alicloud/cloudauth20190307@2.1.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 mobile3MetaDetailVerify(endpoint, request) {i
    const client = createClient(endpoint);
    // 创建RuntimeObject实例并设置运行参数。
    const runtime = new RuntimeOptions([]);
    runtime.readTimeout=5000;
    runtime.connectTimeout=5000;
    return await client.mobile3MetaDetailVerifyWithOptions(request, runtime);
}

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

    for (const endpoint of endpoints) {
        try {
            const response = await mobile3MetaDetailVerify(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.Mobile3MetaDetailVerifyRequest({
        // 固定值。
        paramType: "normal",
        identifyNum: "411***************",
        userName: "张*",
        mobile: "131********",
    });

    // 推荐,支持服务路由。
    const response = await mobile3MetaDetailVerifyAutoRoute(request);
    // 不支持服务自动路由。
    // const response = await mobile3MetaDetailVerify("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.bizCode);
    console.log(response.body.resultObject.ispName);
    console.log(response.body.resultObject.subCode);
    }
}

main().then(function (response) {});