当前位置: 首页 > news >正文

对接阿里云实人认证

对接阿里云实人认证-身份二要素核验接口整理

目录

应用场景

接口文档

接口信息

请求参数

响应参数

调试

阿里云openApi平台调试

查看调用结果

查看SDK示例

下载SDK

遇到问题

本地调试

总结


应用场景

项目有一个提现的场景,需要用户真实的身份信息。

所以需要一个解决方案能验证真正的用户实名信息。

最后采用了阿里云的二要素身份认证。

接口文档

身份二要素核验API_实人认证(ID Verification)-阿里云帮助中心

接口文档如下:

 

接口信息

接口名:id2MetaVerify。

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

请求方法:POST和GET。

传输协议:HTTPS。

接口说明:传入姓名和身份证号,返回权威数据源对二要素的校验结果。

请求参数

参数主要三个:加密不加密类型,身份证号和姓名。具体参数介绍如下:

ParamType

String

加密方式:

normal:明文不加密

md5:MD5加密

重要

所有参数的密文均取32位小写MD5字符串形式。

不同MD5工具得出的密文可能不同,如果加密前接口可以调通但加密后不行,请尝试更换MD5工具。

normal

IdentifyNum

String

身份证号:

paramType 传 normal 时:输入身份证号明文。

paramType 传 md5 时:身份证号前6位(明文)+出生年月日(密文)+身份证号后4位(明文)。

明文:429001********8211

密文:42900132fa7bcd874161bea8ec8fd98f390ec98211

UserName

String

姓名:

paramType 传 normal 时:输入姓名明文。

paramType 传 md5 时:姓名第一个字密文+ 姓名其他部分明文。

明文:张三

密文:6499fc7409049355527ef6a2ba5706b8三

注意:需要阿里云账号的AccessKeyAccesskey_secret.

响应参数

通过code判断接口请求是否成功,而验证是否通过要使用ResultObject中的BizCode字段。

响应参数具体如下:

名称

类型

描述

示例值

RequestId

String

请求ID。

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

Message

String

接口调用返回信息。

重要

此参数仅表示接口是否异常。

success

Code

String

返回码:200表示成功,其他均为失败。

重要

此参数代表是否正确调用了接口,详细的返回码说明请参见错误码。

业务核验结果请通过ResultObject中的字段查看。

200

ResultObject

BizCode

String

身份核验结果:

1:校验⼀致

2:校验不⼀致

3:查⽆记录

1

调试

在这部分浪费不少时间,这部分我重点介绍一下,方便需要的朋友能节省一些不必要的时间浪费。

阿里云openApi平台调试

首先登录阿里云账号

打开阿里云openApi平台直接进行调试。先用明文的方式,输入姓名和身份证号。

调用查看是否能够调通。如下:

 

查看调用结果

通过查看BizCode可以看到这个身份证号和姓名通过了验证。

 

查看SDK示例

这时候就可以查看相应语言下的SDK示例了,发现示例中的参数已经加上了。

示例如下:

SDK示例代码如下:

<?php// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\Id2MetaVerifyRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;class Sample {/*** 使用AK&SK初始化账号Client* @return Cloudauth Client*/public static function createClient(){// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。$config = new Config([// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")]);// Endpoint 请参考 https://api.aliyun.com/product/Cloudauth$config->endpoint = "cloudauth.aliyuncs.com";return new Cloudauth($config);}/*** @param string[] $args* @return void*/public static function main($args){$client = self::createClient();$id2MetaVerifyRequest = new Id2MetaVerifyRequest(["paramType" => "normal","identifyNum" => "你的身份证号","userName" => "你的姓名"]);$runtime = new RuntimeOptions([]);try {// 复制代码运行请自行打印 API 的返回值$client->id2MetaVerifyWithOptions($id2MetaVerifyRequest, $runtime);}catch (Exception $error) {if (!($error instanceof TeaError)) {$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);}// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。// 错误 messagevar_dump($error->message);// 诊断地址var_dump($error->data["Recommend"]);Utils::assertAsString($error->message);}}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {require_once $path;
}
Sample::main(array_slice($argv, 1));

 

之后可以下载完整的SDK,按照SDK示例方式进行调用。

下载SDK

通过查看SDK安装命令,如下:

在自己所在项目的命令行中,执行命令安装SDK:

composer require alibabacloud/cloudauth-20190307 3.1.0

注意:命令中的3.1.0为SDK的版本号,不要修改后面的版本号,如果修改了下载的可能与OpenAPI示例不同,则可能无法使用。

遇到问题

因为项目的composer.lock锁定了阿里云所需的一部分依赖的版本。

直接使用下载SDK中的带版本的命令无法使用。

如果你也遇到这个问题,可以这样解决:

在项目的composer.json中直接添加SDK版本包和版本号后,

执行composer update命令即可解决。

如下:

本地调试

下载完成后,在本地的项目中创建控制器或服务层后,仿照SDK示例代码进行修改调用,

在本地再次调通后,就可以加入到项目功能中进行调用了。

示例如下:

<?phpnamespace AliCardAuth;use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use \Exception;use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\Id2MetaVerifyRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;class AliCardAuth
{/*** 使用AK&SK初始化账号Client* @return Cloudauth Client*/protected static function createClient(){// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。$config = new Config([// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。"accessKeyId" => env("ACCESSKEY.ACCESSKEY_ID"),// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。"accessKeySecret" => env("ACCESSKEY.ACCESSKEY_SECRET")]);// Endpoint 请参考 https://api.aliyun.com/product/Cloudauth$config->endpoint = "cloudauth.aliyuncs.com";return new Cloudauth($config);}/*** 真实名称-身份证号验证* @param $username* @param $idCard* @return array|mixed*/public static function main($username, $idCard){$client = self::createClient();$id2MetaVerifyRequest = new Id2MetaVerifyRequest(["paramType" => "normal","identifyNum" => $idCard,"userName" => $username]);$runtime = new RuntimeOptions([]);try {$response = $client->id2MetaVerifyWithOptions($id2MetaVerifyRequest, $runtime);return $response->toMap()['body'];} catch (Exception $error) {return ['code' => 400, 'message' => $error->getMessage()];// 诊断地址// var_dump($error->data["Recommend"]);// Utils::assertAsString($error->message);}}
}

 

总结

对接阿里云实人认证-身份二要素核验接口整理,中间遇到一些困扰的问题,不过解决了。

相关文章:

对接阿里云实人认证

对接阿里云实人认证-身份二要素核验接口整理 目录 应用场景 接口文档 接口信息 请求参数 响应参数 调试 阿里云openApi平台调试 查看调用结果 查看SDK示例 下载SDK 遇到问题 本地调试 总结 应用场景 项目有一个提现的场景&#xff0c;需要用户真实的身份信息。 …...

UI库架构设计

UI库架构设计 分层 rc-xxx&#xff0c;提供基础组件&#xff0c;unstyled component (headless) &#xff0c;只具备功能交互&#xff0c;不具备UI表现样式体系基础组件复合组件&#xff0c;Search&#xff1a;Input Select &#xff0c;IconButton&#xff1a;Icon Button业…...

电子应用产品设计方案-9:全自动智能马桶系统设计方案

一、系统概述 本全自动智能马桶系统旨在提供舒适、卫生、便捷和智能化的如厕体验。通过融合多种传感器技术、电子控制单元和机械执行机构&#xff0c;实现马桶的自动冲洗、座圈加热、臀部清洗、烘干等功能&#xff0c;并具备智能感应、用户个性化设置和健康监测等特色功能。 二…...

My_SQL day3

知识点&#xff1a;约束 1.dafault 默认约束 2.not null 非空约束 3.unique key 唯一约束 4.primary key 主键约束 5.anto_increment 自增长约束 6.foreign key 外键约束 知识点&#xff1a;表关系 1.一对一 2.一对多 3.多对多 知识点&#xff1a;约束 1.default 默认约束 …...

【代码随想录day31】【C++复健】56. 合并区间;738.单调递增的数字

56. 合并区间 遇到了三个问题&#xff0c;一一说来&#xff1a; 1 比较应该按左区间排序&#xff0c;我却写了右区间。由于本题是合并区间&#xff0c;判断是否连续显然是用下一个的左区间与前一个的右区间比较&#xff0c;属于没想清楚了。 2 在写for循环时写成了如下的代码…...

jmeter常用配置元件介绍总结之逻辑控制器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之逻辑控制器 逻辑控制器1.IF控制器2.事务控制器3.循环控制器4.While控制器5.ForEach控制器6.Include控制器7.Runtime控制器8.临界部分控制器9.交替控制器10.仅一次控制器11.简单控制器12.随机控制器13.随机顺序控制器14.吞…...

解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍后片刻再重试,或与系统管理员或技术支持联系“问题

当我们远程连接服务器连接不上并提示“为安全考虑&#xff0c;已锁定该用户账户&#xff0c;原因是登录尝试或密码更改尝试过多。请稍候片刻再重试&#xff0c;或与系统管理员或技术支持联系”时&#xff0c;根本原因是当前计算机远程连接时输入了过多的错误密码&#xff0c;触…...

中文书籍对《人月神话》的引用(161-210本):微软的秘密

中文书籍对《人月神话》的引用&#xff08;第001到160本&#xff09;>> 《人月神话》于1975年出版&#xff0c;1995年出二十周年版。自出版以来&#xff0c;该书被大量的书籍和文章引用&#xff0c;直到现在热潮不退。 2023年&#xff0c;清华大学出版社推出《人月神话》…...

关于写React的一些反思和总结

这两个星期我都一直在写IT资产管理这个模块。关于这个模块&#xff0c;前端和后端都是我来处理&#xff0c;对于后端&#xff0c;我碰到了很多问题&#xff0c;但是很多问题都可以在比较短的时间内解决&#xff0c;而且不会说完全没有头绪的那种&#xff0c;这一方面源于我本身…...

Qt 每日面试题 -10

91、Qt设计界面有哪些方式? 手工编写创建界面的代码︰此方法比较复杂&#xff0c;不够直观;使用Qt Designer界面编辑器设计︰可直接拖放控件、设置控件的属性&#xff0c;简单、直观、易于操作;动态加载Ul文件并生成界面︰(QUiLoader类加载xx.ui)此方法很灵活&#xff0c;当需…...

三正科技笔试题

&#xff08;15题&#xff0c;45分钟&#xff0c;闭卷&#xff09; 一、( 8 分 &#xff09;请问以下程序输出什么结果&#xff1f; char *getStr(void) 。 &#xff5b; char p[] "hellow world"; return p; &#xff5d; void test(void) &#xff5b; ch…...

Selective attention improves transformer详细解读

Selective attention improves transformer Google 2024.10.3 一句话&#xff1a;简单且无需额外参数的选择性注意力机制&#xff0c;通过选择性忽略不相关信息并进行上下文剪枝&#xff0c;在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。 论…...

git配置用户信息

在 Git 中配置用户信息&#xff0c;主要是设置你的用户名和电子邮件地址&#xff0c;这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤&#xff1a; 打开命令行工具。 设置你的用户名&#xff1a; git config --global user.name "你的名字"例如…...

【eNSP】路由基础与路由来源——静态路由实验

路由是数据包从源地址到目的地址的传输路径&#xff0c;静态路由是指网络管理员手动配置的路由条目&#xff0c;用于指定数据包从源地址到目的地址的固定路径。以下是关于静态路由的详细介绍。 一、路由的基础知识点 路由的定义&#xff1a; 路由是指在计算机网络中&#xff…...

Python Web 应用开发基础知识

Python Web 应用开发基础知识 引言 随着互联网的快速发展&#xff0c;Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言&#xff0c;已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识&#xff0c;包括常用框架、基…...

STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别

GPIO_SetBits&#xff1a; 使用例&#xff1a; GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);意思是将GPIOA1和GPIOA2设为高电平 GPIO_SetBits(GPIOA, 0x0003);意思也是将GPIOA1和GPIOA2设为高电平 实际上当选中GPIOA时&#xff0c;它会按位遍历&#xff0c;在哪一位有1说…...

【Redis_Day4】内部编码和单线程模型

【Redis_Day4】内部编码和单线程模型 五大数据类型内部编码object encoding key1&#xff1a;查询key1对应值的内部编码 redis中的单线程模型 redis中的数据都是以键值对的方式存的&#xff0c;redis内部用哈希表组织这些键值对。 五大数据类型 站在用户角度&#xff0c; 在一…...

Vue模块化开发的理解

Vue模块化是指在Vue.js开发中&#xff0c;将代码按功能拆分成多个独立的模块&#xff0c;以提高代码的可维护性、可读性和复用性。以下是对Vue模块化的详细理解&#xff1a; 一、Vue模块化的实现方式 组件化开发&#xff1a; Vue组件是模块化的基本单元&#xff0c;每个组件封…...

在Ubuntu22.04上源码构建ROS noetic环境

Ubuntu22.04上源码构建ROS noetic 起因准备环境创建工作目录并下载源码安装编译依赖包安装ros_comm和rosconsole包的两个补丁并修改pluginlib包的CMakeLists的编译器版本编译安装ROS noetic和ros_test验证 起因 最近在研究VINS-Mono从ROS移植到ROS2&#xff0c;发现在编写feat…...

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数&#xff0c;初始化节点对象&#xff0c;包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点&#xff0c;默认为None self.rig…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...