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

对接阿里云实人认证

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

目录

应用场景

接口文档

接口信息

请求参数

响应参数

调试

阿里云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);
            }
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            var_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示例代码进行修改调用,

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

示例如下:

<?php

namespace 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);
        }
    }
}

 

总结

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


http://www.kler.cn/a/397882.html

相关文章:

  • Vue3 provide 和 inject的使用
  • 计算机视觉在自动驾驶汽车中的应用
  • CSS Modules中的 :global
  • FRP 实现内网穿透
  • CDH安装与配置及相关大数据组件实践
  • Python Web 应用开发基础知识
  • UG Motion学习笔记
  • 【AI图像生成网站Golang】JWT认证与令牌桶算法
  • 在 Linux 系统上部署 Oracle 数据库涉及多个步骤
  • AI技术如何助力电商平台提升销售效率与用户体验?——创新应用、挑战与未来发展趋势
  • 【代码随想录回溯算法|子集问题】
  • 排序算法(基础)大全
  • 网络工程实验四:NAT的配置
  • 【MongoDB】MongoDB的核心-索引原理及索引优化、及查询聚合优化实战案例(超详细)
  • 【基于轻量型架构的WEB开发】课程 13.2.4 拦截器 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis
  • 机器学习:XGBoost模型(升级版)——高效且强大的树形模型
  • 安全见闻4
  • 《C语言程序设计现代方法》note-5 数组
  • 【开源免费】基于SpringBoot+Vue.JS卫生健康系统(JAVA毕业设计)
  • 【C++】OGRE:面向对象图形渲染库配置与示例
  • 2024山西省网络建设运维第十八届职业院校技能大赛解析答案(5. nginx 和 tomcat 服务)
  • 模型压缩相关技术概念澄清(量化/剪枝/知识蒸馏)
  • Pyhon基础数据结构(列表)【蓝桥杯】
  • 永磁同步电机负载估计--降阶龙贝格观测器
  • openai 论文Scaling Laws for Neural Language Models学习
  • 【项目日记】仿mudou的高并发服务器 --- 整体框架搭建 ,实现时间轮模块