您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

身份证号码API 查询接口

时间:2022-07-02 10:04:38  来源:  作者:IT智能化专栏

接口描述

功能描述:身份证号码查询获取身份证的出生日期、性别、签发地区等信息。

URL 示例

1)http 协议:

POST 方式请求:
http://cha.ebAItian.cn/api/json?Appid=xxx&module=getIDCardInfo&idcard=xxx&sign=xxx

GET 方式请求:
http://cha.ebaitian.cn/api/json?type=get&appid=xxx&module=getIDCardInfo&idcard=xxx&sign=xxx

2)https 协议:

POST 方式请求:
https://cha.ebaitian.cn/api/json?appid=xxx&module=getIDCardInfo&idcard=xxx&sign=xxx

GET 方式请求:
https://cha.ebaitian.cn/api/json?type=get&appid=xxx&module=getIDCardInfo&idcard=xxx&sign=xxx

请求参数

数据包体

{
"type": "get",
"appid": "1000xxxx",
"module": "getIDCardInfo",
"idcard": "420101199001010000",
"sign": "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4"
}

参数说明

参数必选类型描述

type否string授权接口的请求方式

appid是string授权接口的 AppID,请填写您在我要查官网上申请到的 AppID

module是string目标请求的数据模块,查询身份证号码为:getIDCardInfo

idcard是string目标要查询的身份证号码,仅支持18位二代身份证号码

sign是string请求凭证,具体计算方式见下面的其他说明

其他说明

1)type:可选值 get,如果赋值 get,则以 get 方式提交数据;默认以 post 方式提交数据;

2)sign:签名校验,根据公式 $sign=sha256(appid=$appid&module=getIDCardInfo&idcard=$idcard&appkey=$appkey) 生成;其中:appkey 为授权接口的 AppKey,请填写您在我要查官网上申请到的 AppKey 。

构造伪代码如下:

string type = "get"; //请求方式,可以赋值为:post
string appid = "1000xxxx"; //sdkappid 对应的 appid,需要业务方高度保密
string module = "getIDCardInfo"; //请求的数据模块,此处赋值:getIDCardInfo
string idcard = "420101199001010000"; //要查询的身份证号码,注意仅支持18位二代身份证号码
string sign = sha256(appid=1000xxxx&module=getIDCardInfo&idcard=420101199001010000&appkey=56cf61af4b7897e704f67deb88ae8f24);

响应参数

数据包体

{
"result":1,
"description":"TRUE",
"flag":"",
"idcardInfo":{
"birthday":"1996年02月01日",
"sex":"女",
"province":"湖北省",
"city":"武汉市",
"dis":"东西湖区",
"note":null
}
}

参数说明

参数必选类型描述

result是string接口响应结果:0-失败;1-成功

description是string接口响应描述:一般为 TURE(result=1) 与 FALSE(result=0),或者返回错误信息

flag否string错误说明,没有错误则返回空

idcardInfo是object返回身份证信息

idcardInfo 参数说明:

参数必选类型描述

birthday是string出生日期

sex是string性别

province是string发证地区,省(市/自治区)

city是string发证地区,市(区/自治州)

dis是string发证地区,区(县/市/区)

note否string其他备注信息,一般为空

SDK 及代码示例

php SDK

方法一:以 POST 方式请求数据

//接口参数
$api_url='http://cha.ebaitian.cn/api/json';
$api_appid='1000xxxx';
$api_appkey='56cf61af4b7897e704f67deb88ae8f24';
//函数,以POST方式提交数据,PHP需要开启CURL函数;数据传输安全,建议使用
function getIDCardInfo($idcard){
global $api_url,$api_appid,$api_appkey;
$posturl=$api_url;
$data='appid='.$api_appid.'&module=getIDCardInfo&idcard='.$idcard;
$sign=hash("sha256",$data.'&appkey='.$api_appkey);
$postdata=array("appid"=>$api_appid,"appkey"=>$api_appkey,"module"=>"getIDCardInfo","idcard"=>$idcard,'sign'=>$sign);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $posturl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
$output = curl_exec($curl);
curl_close($curl);
$obj=json_decode($output);
$result=$obj->result;
if($result==1){
$value=$obj->idcardInfo->birthday;
$value.=','.$obj->idcardInfo->sex;
$value.=','.$obj->idcardInfo->province;
$value.=','.$obj->idcardInfo->city;
$value.=','.$obj->idcardInfo->dis;
}else{
$value=$obj->flag;
}
return $value;
}
//调用函数
$idcard='420101199001010000';
echo getIDCardInfo($idcard);
exit;

方法二:以 GET 方式请求数据

//接口参数
$api_url='http://cha.ebaitian.cn/api/json';
$api_appid='1000xxxx';
$api_appkey='56cf61af4b7897e704f67deb88ae8f24';
//函数,以GET方式提交数据
function getIDCardInfo($idcard){
global $api_url,$api_appid,$api_appkey;
$data='appid='.$api_appid.'&module=getIDCardInfo&idcard='.$idcard;
$sign=hash("sha256",$data.'&appkey='.$api_appkey);
$info_get=file_get_contents($api_url.'?type=get&'.$data.'&sign='.$sign);
$info_json=json_decode($info_get, true);
$result=$info_json['result'];
if($result==1){
$value=$info_json['idcardInfo']['birthday'];
$value.=','.$info_json['idcardInfo']['sex'];
$value.=','.$info_json['idcardInfo']['province'];
$value.=','.$info_json['idcardInfo']['city'];
$value.=','.$info_json['idcardInfo']['dis'];
}else{
$value=$info_json['flag'];
}
return $value;
}
//调用函数
$idcard='420101199001010000';
echo getIDCardInfo($idcard);
exit;

JAVA SDK

//以下示例是以 GET 方式请求数据
public class QueryHelper {
public static String apiurl="http://cha.ebaitian.cn/api/json";
public static String appid="1000xxxx";
public static String appkey="56cf61af4b7897e704f67deb88ae8f24";
public static String module="getIDCardInfo";
public static String getSHA256Str(String str){
MessageDigest messageDigest;
String encdeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));
encdeStr = Hex.encodeHexString(hash);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encdeStr;
}
public static String get(String urlString) {
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setReadTimeout(5 * 1000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
StringBuilder builder = new StringBuilder();
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream(),"utf-8"));
for (String s = br.readLine(); s != null; s = br.readLine()) {
builder.append(s);
}
br.close();
return builder.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String queryIDCard(String idcard){
String sign=getSHA256Str("appid="+appid+"&module="+module+"&idcard="+idcard+"&appkey="+appkey);
String url=apiurl+"?type=get&appid="+appid+"&module="+module+"&idcard="+idcard+"&sign="+sign;
return get(url);
}
}
//使用示例
QueryHelper.queryIDCard("420101199001010000");

Python/ target=_blank class=infotextkey>Python SDK

#!/usr/bin/python
# -*- coding: utf-8 -*-
import httplib2
import hashlib
from urllib.parse import urlencode #python3
#from urllib import urlencode #python2
apiurl='http://cha.ebaitian.cn/api/json'
appid='1000xxxx'
appkey='56cf61af4b7897e704f67deb88ae8f24'
module='getIDCardInfo'
idcard='420101199001010000'
data='appid='+appid+'&module='+module+'&idcard='+idcard
sign_data=data+'&appkey='+appkey
# from Crypto.Cipher import AES
# from Crypto.Hash import SHA256
# 256
hash_256 = hashlib.sha256()
hash_256.update(sign_data.encode('utf-8'))
sign = hash_256.hexdigest()
postdata = urlencode({'appid':appid,'module':module,'idcard':idcard,'sign':sign})
url = apiurl+'?'+postdata
http = httplib2.Http()
response, content = http.request(url,'GET')
print(content.decode("utf-8"))
Node.js SDK

方法一:以 POST 方式请求数据

//以 POST 方式提交
var http = require('http');
var querystring = require('querystring');
//参数设置
var appid = '1000xxxx';
var appkey = '56cf61af4b7897e704f67deb88ae8f24';
var module = 'getIDCardInfo';
//目标查询身份证号码
var idcard='420101199001010000';
//签名,SHA256 不可直接调用;函数参考下载地址:
https://Github.com/alexweber/jquery.sha256
var sign = SHA256('appid='+appid+'&module='+module+'&idcard='+idcard+'&appkey='+appkey);
//这是需要提交的数据
var post_data = {
appid: appid,
module: module,
idcard: idcard,
sign: sign
};
var content = querystring.stringify(post_data);
var options = {
hostname: 'cha.ebaitian.cn',
port: 80,
path: '/api/json',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
};
var req = http.request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
//JSON.parse(chunk)
});
});
req.on('error', function (e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write(content);
req.end();

方法二:以 GET 方式请求数据

//以 GET 方式提交
var http = require('http');
var querystring = require('querystring');
//参数设置
var appid = '1000xxxx';
var appkey = '56cf61af4b7897e704f67deb88ae8f24';
var module = 'getIDCardInfo';
//目标查询身份证号码
var idcard='420101199001010000';
//签名,SHA256 不可直接调用;函数参考下载地址:
https://github.com/alexweber/jquery.sha256
var sign = SHA256('appid='+appid+'&module='+module+'&idcard='+idcard+'&appkey='+appkey);
//这是需要提交的数据
var data = {
appid: appid,
module: module,
idcard: idcard,
sign: sign
};
var content = querystring.stringify(data);
var options = {
hostname: 'cha.ebaitian.cn',
port: 80,
path: '/api/json?' + content,
method: 'GET'
};
var req = http.request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function (e) {
console.log('problem with request: ' + e.message);
});
req.end();

C# SDK

using System;
using System.Collections.Generic;
using System.Web;
using System.NET;
using System.Text;
public class getIDCardInfo{
public static string getInfo(string appid, string appkey, string module, string idcard){
string url = string.Format("http://cha.ebaitian.cn/api/json?type=get&appid={0}&module={1}&idcard={2}&sgin={3}", appid, module, idcard, sgin);
using (WebClient client = new WebClient()){
client.Encoding = Encoding.UTF8;
return client.DownloadString(url);
}
}
}
string idcardInfo = getIDCardInfo.getInfo("1000xxxx", "getIDCardInfo", "420101199001010000", "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4", Request.UserHostAddress);
Console.WriteLine(idcardInfo);
Response.Write(idcardInfo);

JavaScript SDK

方法一:以 POST 方式请求数据
//使用 JQuery 请先加载最新的 JQuery 插件
//参数设置
var apiurl = 'http://cha.ebaitian.cn/api/json';
var appid = '1000xxxx';
var appkey = '56cf61af4b7897e704f67deb88ae8f24';
var module = 'getIDCardInfo';
//目标查询身份证号码
var idcard='420101199001010000';
//签名,SHA256 不可直接调用;函数参考下载地址:
https://github.com/alexweber/jquery.sha256
var sign = SHA256('appid='+appid+'&module='+module+'&idcard='+idcard+'&appkey='+appkey);
//提交数据
$.ajax({
url:apiurl,
type:'post',
dataType:'json',
data:{
appid:appid,
module:module,
idcard:idcard,
sign:sign
},
success:function(res){
console.log(res);
}
});

方法二:以 GET 方式请求数据

//使用 JQuery 请先加载最新的 JQuery 插件
//参数设置
var apiurl = 'http://cha.ebaitian.cn/api/json';
var appid = '1000xxxx';
var appkey = '56cf61af4b7897e704f67deb88ae8f24';
var module = 'getIDCardInfo';
//目标查询身份证号码
var idcard='420101199001010000';
//签名,SHA256 不可直接调用;函数参考下载地址:
https://github.com/alexweber/jquery.sha256
var sign = SHA256('appid='+appid+'&module='+module+'&idcard='+idcard+'&appkey='+appkey);
//提交数据
$.ajax({
url:apiurl,
type:'post',
dataType:'json',
data:{
appid:appid,
module:module,
idcard:idcard,
sign:sign
},
success:function(res){
console.log(res);
}
});

ASP SDK

'设置参数
dim apiurl, appid, appkey, module, idcard, sign
apiurl="http://cha.ebaitian.cn/api/json"
appid="1000xxxx'
appkey="56cf61af4b7897e704f67deb88ae8f24"
module="getIDCardInfo"
idcard="420101199001010000"
'签名,SHA256 不可直接调用;函数参考地址:
https://blog.csdn.net/yesoce/article/details/128546
sgin=SHA256("appid=&appid&"&module="&module&"&idcard="&idcard&"&appkey="&appkey)
'异步提交数据
function PostHTTPPage(url,data)
dim Http
set Http=server.createobject("MSXML2.SERVERXMLHTTP.3.0")
Http.open "POST",url,false
Http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
Http.send(data)
if Http.readystate<>4 then
exit function
End if
PostHTTPPage=bytesToBSTR(Http.responseBody,"UTF-8")
set http=nothing
if err.number<>0 then err.Clear
End function
'提交数据
dim postdata, strTest
postdata="appid=&appid&"&module="&module&"&idcard="&idcard&"&sign="&sign
strTest=PostHTTPPage(apiurl,postdata)
'返回结果
response.write(strTest)
response.end

常见问题

API 接口参数为空

此错误返回 JSON 数据如下:

Copy

{

"result":0,

"description":"API接口参数为空",

"flag":"appid:sign"

}

解决方法:

1)请检查 appid 及 sign 是否为空;

2)确保 appid 是从官网获取到正确的接口授权;

3)确保 sign 计算生成是正确的。

API 接口参数无效

此错误返回 JSON 数据如下:

Copy

{

"result":0,

"description":"API接口参数无效",

"flag":"appid"

}

解决方法:

1)请检查 appid 是否正确;

2)确保 appid 是从官网获取到正确的接口授权。

API 接口授权已到期

此错误返回 JSON 数据如下:

Copy

{

"result":0,

"description":"API接口授权已到期",

"flag":"end:2018-12-31 23:59:59"

}

解决方法:

1)请检查 appid 对应接口授权的期限是否过期;

2)如果接口授权过期,请到官网更新(免费用户直接更新,无需续费)或续费(针对商业付费用户)。

签名错误

此错误返回 JSON 数据如下:

Copy

{

"result":0,

"description":"签名错误",

"flag":"getIDCardInfo->sign"

}

解决方法:

1)请检查 sign 签名计算是否正确;

2)签名 sign 根据公式 $sign=sha256(appid=$appid&module=getIDCardInfo&idcard=$idcard&appkey=$appkey) 生成;其中:appkey 为授权接口的 AppKey,请填写您在我要查官网上申请到的 AppKey 。

请求受限

此错误返回 JSON 数据如下:

Copy

{

"result":0,

"description":"请求受限",

"flag":"getIDCardInfo->daylimit"

}

解决方法:

1)授权接口已超出当前接口产品请求的最大限制;

2)请根据实际使用需求升级您的接口产品。



Tags:API   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
中国三大运营商共同发布通过GSMA Open Gateway认证的一次性密码 API
3月26日,北京:中国三大领先的移动运营商&mdash;&mdash;中国移动、中国电信和中国联通今日发布商用OTP API(一次性密码API)服务,并通过了GSMA Open Gateway认证。此次发布标志着中...【详细内容】
2024-03-26  Search: API  点击:(24)  评论:(0)  加入收藏
如何免费访问和使用Gemini API?
Gemini是谷歌开发的一个新模型。有了Gemini可以为查询提供图像、音频和文本,获得几乎完美的答案。 我们在本教程中将学习Gemini API以及如何在机器上设置它。我们还将探究各...【详细内容】
2024-02-19  Search: API  点击:(65)  评论:(0)  加入收藏
构建 Web API 的两种流行选择:REST vs GraphQL
在 RESTful 和 GraphQL API 之间的选择取决于您的具体用例。RESTful API 适用于需要高可伸缩性的简单应用程序,而 GraphQL 则适用于具有不同数据需求的复杂应用程序。简介RES...【详细内容】
2024-01-09  Search: API  点击:(66)  评论:(0)  加入收藏
FastAPI:高性能Web框架的简介与应用
正文:在当今互联网时代,构建高性能的WebAPI是许多开发人员的关注重点。而FastAPI作为一个现代、快速的Web框架,为基于标准Python类型提示的API构建提供了强大的支持。FastAPI的...【详细内容】
2023-12-27  Search: API  点击:(105)  评论:(0)  加入收藏
理解 Spark 写入 API 的数据处理能力
这张图解释了 Apache Spark DataFrame 写入 API 的流程。它始于对写入数据的 API 调用,支持的格式包括 CSV、JSON 或 Parquet。流程根据选择的保存模式(追加、覆盖、忽略或报...【详细内容】
2023-12-13  Search: API  点击:(154)  评论:(0)  加入收藏
如何在Python中使用ChatGPT API处理实时数据
译者 | 李睿审校 | 重楼OpenAI公司推出的GPT如今已经成为全球最重要的人工智能工具,并精通基于其训练数据处理查询。但是,它不能回答未知话题的问题,例如: 2021年9月之后的近期...【详细内容】
2023-12-13  Search: API  点击:(248)  评论:(0)  加入收藏
伪原创API是什么?六个角度了解伪原创API
伪原创API,听起来可能对许多人来说是一个陌生的术语。然而,在当今数字化时代,尤其是在内容创作和网络营销领域,伪原创API正逐渐崭露头角。在本文中,我将向您深入介绍伪原创API是...【详细内容】
2023-12-11  Search: API  点击:(160)  评论:(0)  加入收藏
使用FastAPI部署YOLO模型的步骤
在计算机视觉领域,You Only Look Once (YOLO) 算法已经崭露头角,成为一种改变游戏规则的算法。它承诺具有卓越准确性的实时目标检测,使其成为从监视和自动驾驶车辆到图像和视频...【详细内容】
2023-12-06  Search: API  点击:(164)  评论:(0)  加入收藏
构建强大REST API的十个最佳实践
在项目开发中,我们经常会使用REST风格进行API的定义,这篇文章为大家提供10条在使用REST API时的最佳实践。希望能够为你带来灵感和帮助。1、使用具体且有意义的资源名称选择能...【详细内容】
2023-12-06  Search: API  点击:(150)  评论:(0)  加入收藏
前端请求到后端API的中间件流程解析
在前端请求到后端API的典型流程中,经过一系列中间件的处理,确保请求的顺利处理和安全性。以下是中间件的详细解析:1. 前端请求用户在前端发起请求,包括请求的URL、参数、以及其...【详细内容】
2023-12-06  Search: API  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(3)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(14)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条