企业基本信息查询
1. 接口概述
根据完整企业名称查询企业工商基本信息,包括企业名称、经营状态、法定代表人、统一社会信用代码、注册资本、注册地址、联系方式、经营范围等。
推荐调用流程:
企业名称模糊搜索
↓
用户选择正确企业
↓
取得完整companyName
↓
调用企业基本信息查询接口
每次成功调用会扣减调用方所属企业的 1 次工商查询额度。
2. 接入准备
调用接口前,需要向平台申请:
| 凭证 | 说明 |
|---|---|
appid |
调用方应用身份标识 |
appsecret |
调用方应用签名密钥 |
安全要求:
appid通过请求 Header 发送。appsecret只用于调用方本地计算签名。- 不得在浏览器前端、移动端安装包或公开代码中保存
appsecret。
3. 请求地址
请求方式:
POST
可用地址:
https://vip.xty123.cn/api/open/enterprise/baseInfo
请求数据格式:
application/json; charset=UTF-8
4. 请求鉴权
4.1 鉴权 Header
| Header | 类型 | 必填 | 说明 |
|---|---|---|---|
Content-Type |
String | 是 | 固定为 application/json |
appid |
String | 是 | 平台分配的应用 ID |
nonce |
String | 是 | 随机字符串,建议每次请求重新生成 |
timestamp |
String | 是 | 时间戳,建议使用 10 位 Unix 秒级时间戳 |
signature |
String | 是 | 根据签名规则计算的签名 |
4.2 签名规则
待签名字符串 = appsecret + nonce + timestamp
计算 MD5:
signature = MD5(appsecret + nonce + timestamp)
签名结果应为 32 位小写十六进制字符串。
nonce = 生成随机字符串
timestamp = 当前Unix秒级时间戳
source = appsecret + nonce + timestamp
signature = MD5(source).转小写()
注意:
appsecret不通过网络发送。nonce、timestamp必须与计算签名时使用的值完全一致。- 不需要发送名为
sign的 Header。 - 请求路径、请求参数和请求体不参与当前签名计算。
5. 请求参数
5.1 JSON 请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName |
String | 是 | 完整企业名称,不能为空 |
建议使用模糊搜索接口返回的 companyName 原值,不要自行删减企业名称中的行政区划、括号或组织形式。
5.2 请求示例
POST /api/open/enterprise/baseInfo HTTP/1.1 Host: vip.xty123.cn Content-Type: application/json appid: <平台分配的appid> nonce: a8f3c2e91b7d4k6m timestamp: 1789344000 signature: <计算得到的32位小写MD5值> { "companyName": "示例科技有限公司" }
6. 返回结构
6.1 公共响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
code |
Integer | 业务状态码,0 表示成功 |
msg |
String | 业务状态说明 |
data |
Object | 企业工商基本信息 |
调用方必须判断响应中的 code,不能只根据 HTTP 状态码判断业务是否成功。
6.2 data 企业信息字段
所有企业信息字段均可能为空,调用方必须做好空值兼容。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
String | 工商信息记录 ID,可能为空 |
companyName |
String | 企业名称 |
englishCompanyName |
String | 企业英文名称 |
companyStatus |
String | 企业经营状态,例如存续、注销 |
establishDate |
String | 企业成立日期 |
legalName |
String | 法定代表人 |
registerCapital |
String | 注册资本,可能包含数值、单位和币种 |
creditCode |
String | 统一社会信用代码 |
address |
String | 企业注册地址 |
phoneNumber |
String | 企业联系电话 |
email |
String | 企业联系邮箱 |
bankName |
String | 开户银行,可能为空 |
bankAccount |
String | 银行账号,可能为空 |
operateScope |
String | 企业经营范围 |
phoneList |
String | 电话集合,当前为 JSON 数组格式的字符串 |
isMicroEnt |
String | 是否为微型企业 |
staffNumRange |
String | 员工数量范围 |
industry |
String | 所属行业 |
socialStaffNum |
String | 参保人数或社会员工数 |
tags |
String | 企业标签 |
approvedTime |
String | 工商核准日期 |
regCapitalCurrency |
String | 注册资本币种 |
actualCapitalCurrency |
String | 实收资本币种 |
companyOrgType |
String | 企业组织形式或企业类型 |
emailList |
String | 邮箱集合,当前为 JSON 数组格式的字符串 |
toTime |
String | 营业期限结束日期 |
regInstitute |
String | 工商登记机关 |
legalPersonId |
String | 法定代表人相关标识,可能为空 |
createTime |
String | 数据缓存创建时间 |
updateTime |
String | 数据缓存更新时间 |
thirdUpdate |
String | 调用方工商数据更新时间 |
website |
String | 企业官网 |
rating |
String | 纳税信用评级 |
6.3 特殊字段说明
phoneList
phoneList 的字段类型是字符串,不是标准 JSON 数组。
返回示例:
{
"phoneList": "[\"021-60000000\",\"13800000000\"]"
}
如需按数组使用,需要先判断字段非空,再进行一次 JSON 数组解析。
emailList
emailList 同样是字符串类型:
{
"emailList": "[\"contact@example.com\",\"service@example.com\"]"
}
日期字段
日期字段来源于不同工商数据源,调用方应优先按照字符串处理,不要强制假设所有字段使用同一种日期格式。
createTime 和 updateTime 通常使用:
yyyy-MM-dd HH:mm:ss
7. 成功响应示例
{
"code": 0,
"msg": "成功",
"data": {
"id": "6900585c7d4cea77dc507c4e",
"companyName": "示例科技有限公司",
"englishCompanyName": "Example Technology Co., Ltd.",
"companyStatus": "存续",
"establishDate": "2020-01-15 00:00:00",
"legalName": "张三",
"registerCapital": "1000万元人民币",
"creditCode": "91310000XXXXXXXXXX",
"address": "上海市示例区示例路100号",
"phoneNumber": "021-60000000",
"email": "contact@example.com",
"bankName": null,
"bankAccount": null,
"operateScope": "技术服务、技术开发、技术咨询、技术交流。",
"phoneList": "[\"021-60000000\",\"13800000000\"]",
"isMicroEnt": "0",
"staffNumRange": "100-499人",
"industry": "软件和信息技术服务业",
"socialStaffNum": "120",
"tags": "存续;高新技术企业",
"approvedTime": "2023-07-31 00:00:00",
"regCapitalCurrency": "人民币",
"actualCapitalCurrency": null,
"companyOrgType": "有限责任公司",
"emailList": "[\"contact@example.com\"]",
"toTime": "2040-01-14 00:00:00",
"regInstitute": "上海市市场监督管理局",
"legalPersonId": null,
"createTime": "2026-09-14 10:30:00",
"updateTime": "2026-09-14 10:30:00",
"thirdUpdate": "2026-09-13 18:20:00",
"website": "https://www.example.com",
"rating": "A"
}
}
示例中的企业名称、统一社会信用代码、联系方式等均为演示数据。
8. 失败响应示例
8.1 公司名称为空
{
"code": 400,
"msg": "公司名不能为空",
"data": null
}
8.2 鉴权失败
{
"code": 413,
"msg": "鉴权失败",
"data": null
}
8.3 工商查询额度不足
{
"code": 1102,
"msg": "剩余条数不够",
"data": null
}
8.4 服务异常
{
"code": 500,
"msg": "未知异常,请稍候再试",
"data": null
}
9. 业务状态码
| code | 状态说明 | 处理建议 |
|---|---|---|
0 |
请求处理成功 | 成功 |
400 |
请求参数校验失败 | 检查 companyName |
413 |
鉴权失败 | 检查鉴权 Header 和签名算法 |
1102 |
工商查询额度不足 | 增加查询额度 |
500 |
服务异常 | 联系客服 |
10. 调用注意事项
- 建议使用模糊搜索接口返回的完整企业名称进行详情查询。
- 不要随意删除企业名称中的行政区划、括号和组织形式。
- 所有企业详情字段都可能为空。
phoneList和emailList当前是字符串,不是标准 JSON 数组。- 请求参数名称必须使用
companyName。 - 每次请求建议重新生成签名参数。
appsecret不得通过网络发送。- 调用方应同时判断 HTTP 状态码和响应业务状态码。
- 即使
code = 0,也需要检查data.companyName是否存在。 - 每次成功调用会扣减 1 次工商查询额度。
- 重复调用同一个企业名称会被视为多次查询。
- 请求超时后不要无限自动重试,因为服务端可能已经完成查询和额度扣减。
- 调用方应设置合理的连接超时和读取超时时间。
- 不建议直接把工商数据中的联系电话或邮箱作为唯一可信联系方式,应根据调用方自身业务进行核验。