# 接口文档
# 一、基本介绍
本系统接口服务基于HTTPS 协议的API接口,返回数据为JSON 格式。使用接口不依赖于任何语言,使用非常方便简单。
接口通用URL: https://srm.api.rccchina.com/api/open/v1/
API接口验证方式:鉴权凭证验证
需要在请求头添加accessToken
请求头参数 | 是否必传 | 使用示例 | 含义 |
---|---|---|---|
Access-Token | 是 | "Access-Token: xxx" | 请求头添加,然后接口需要进行验证token是否有效 |
# 前置条件
- 使用方需要提前获取
appKey
和appSecret
(应用程序密钥,用户在购买慧讯网AI比价数据系统API服务时获得的唯一识别密钥
)。 - 使用方需要提前提供所使用的
服务IP
,慧讯网AI比价数据系统将会把IP地址添加到白名单中,以确保接口服务的安全性。
注意:
appKey
和appSecret
需要使用方高度保密,切勿将其存储在客户端,以确保安全- 使用方应严格遵守慧讯网AI比价数据系统的服务协议,不得将
appKey
和appSecret
泄露给任何第三方
# 二、通用返回格式
返回参数格式:
名称 | 类型 | 说明 |
---|---|---|
code | Integer | 表示执行的结果,成功会返回 10000,重要错误会返回负数。其他错误会返回小于10000的正整数。具体异常码见第五节 |
data | Object | 具体返回的真实数据,具体根据发送的请求不同而不同,详细信息请参考各自接口请求的定义。 |
created_at | String | 执行结果返回的时间戳 |
message | String | 返回结果的文字描述(仅供开发参考使用)真正执行结果是否正确,请参考 code 字段 |
# 三、接口对接验证介绍
# 接口验证方式
慧讯网AI比价数据系统为外部系统提供 appKey
(应用标识,16位)、secretKey
(应用密钥,32位)。
每个接口需先通过鉴权接口获取 accessToken
(有效期24小时),然后在请求接口时需要在请求头携带 accessToken
,接口提供方验证 accessToken
的有效性,token有效则放行请求,反之则需要接口调用方重新生成 accessToken
访问
# 接口鉴权流程
# 鉴权接口
示例-鉴权接口URL示例
GET https://srm.api.rccchina.com/api/open/v1/auth/get_access_token
接口路径:/auth/get_access_token
请求方式:GET
接口参数:
名称 | 格式 | 是否必传 | 说明 |
---|---|---|---|
appKey | String | ✔️ | 应用标识 |
secretKeyDigest | String | ✔️ | 应用密钥与时间戳通过 SHA256 加密生成(非对称加密) |
timestamp | 时间戳 | ✔️ | 当前时间戳(单位:毫秒,示例:1604545665400 ) |
生成secretKeyDigest的JavaScript代码示例:
import sha256 from 'crypto-js/sha256';
sha256('应用密钥-时间戳').toString();
2
生成secretKeyDigest的Ruby代码示例:
Digest::SHA256.hexdigest('应用密钥-时间戳')
生成secretKeyDigest的Java代码示例:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Example {
public static void main(String[] args) throws NoSuchAlgorithmException {
String input = "应用密钥-时间戳";
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(input.getBytes());
StringBuffer sb = new StringBuffer();
for (byte b : hash) {
sb.append(String.format("%02x", b));
}
String result = sb.toString();
System.out.println(result);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
返回参数:
这里所描述的返回参数即通用返回格式中data字段的内容。如果是数组,那么就是数组内单个元素的返回字段。
名称 | 格式 | 说明 |
---|---|---|
accessToken | String | 访问凭证,有效期24小时 |
expiresIn | Integer | 凭证有效时间(单位:秒) |
示例响应参数:
{
"code": 10000,
"data": {
"accessToken": "xxx",
"expiresIn": 86400
},
"created_at": "2025-04-06 17:52:45",
"message": "success"
}
2
3
4
5
6
7
8
9
# 四、对外提供的API接口方法
# 1. 同步人员信息
接口说明
同步人员信息。
示例-同步人员信息URL示例
POST https://srm.api.rccchina.com/api/open/v1/org/update_account
接口路径:
/org/update_account
请求方式:
POST
请求参数:
参数名称 | 格式 | 是否必传 | 说明 |
---|---|---|---|
name | String | ✔️ | 中文姓名 |
String(邮箱格式) | ✔️ | 邮箱 | |
phone | String(11位手机号) | ✔️ | 手机号 |
status | String | ✔️ | 状态:active (正常)、inactive (禁用)、leave (离职),默认 active |
uuid | String | ✔️ | 外部系统唯一标识(用于关联关系和单点登录) |
示例请求参数:
{
"name": "张三",
"email": "123@qq.com",
"phone": "13800138000",
"status": "active",
"uuid": "user_123"
}
2
3
4
5
6
7
返回参数:
这里所描述的返回参数即通用返回格式中data字段的内容。如果是数组,那么就是数组内单个元素的返回字段。
参数 | 类型 | 说明 |
---|---|---|
syncHistoryId | String|Integer | 同步操作历史ID,用于后续查询 |
示例响应参数:
{
"code": 10000,
"data": {
"syncHistoryId": '1111'
},
"message": "success"
}
2
3
4
5
6
7
# 2. 批量同步组织结构信息
接口说明
批量同步组织架构信息,可以同步公司、部门、职位、人员信息。
示例-同步组织结构信息URL示例
POST https://srm.api.rccchina.com/api/open/v1/org/create_or_update_auth
接口路径:/org/create_or_update_auth
请求方式:POST
请求参数:
根参数 orgInfo
:
参数名称 | 类型 | 必填 | 描述 | 约束 |
---|---|---|---|---|
orgInfo | Array | ✔️ | 数据集合 | 至少包含一个元素 |
对象字段说明:
每个数组元素需包含以下字段:
参数名称 | 类型 | 必填 | 描述 | 约束 |
---|---|---|---|---|
category | String | ✔️ | 类型 | 允许值:firms/departments/job_titles/accounts |
uuid | String | ✔️ | 外部系统唯一标识 | |
name | String | ✔️ | 名称 | |
parent_uuid | String | ✖️ | 父级唯一标识 | 仅当存在父级时需填写 |
类型特定约束:
当
category = job_titles
时:参数名称 类型 必填 描述 department_uuid String ✔️ 外部系统部门唯一标识 当
category = accounts
时:参数名称 类型 必填 描述 约束 email String ✔️ 邮箱 需符合邮箱格式正则校验 phone String ✔️ 手机号 需符合11位手机号正则校验 status String ✖️ 在职状态 默认值: active
firm_uuid String ✔️ 所属公司唯一标识 当需关联公司时必填 department_uuid String ✔️ 部门唯一标识 当需关联部门时必填 job_title_uuid String ✔️ 职位唯一标识 当需关联职位时必填
示例请求参数:
{
"orgInfo": [
{
"category": "firms",
"uuid": "company_001",
"name": "公司A"
}, // 同步公司信息
{
"category": "departments",
"uuid": "dept_002",
"name": "部门A",
"parent_uuid": "dept_001"
}, // 同步部门信息
{
"category": "job_titles",
"uuid": "job_003",
"name": "职位A",
"department_uuid": "dept_002"
}, // 同步职位信息
{
"category": "accounts",
"uuid": "user_123",
"name": "张三",
"email": "zhangsan@example.com",
"phone": "13800138000",
"job_title_uuid": "job_003",
"firm_uuid": "company_001",
"department_uuid": "dept_002"
} // 同步人员信息
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
返回参数:
这里所描述的返回参数即通用返回格式中data字段的内容。如果是数组,那么就是数组内单个元素的返回字段。
参数 | 类型 | 说明 |
---|---|---|
syncHistoryId | String|Integer | 同步操作历史ID,用于后续查询 |
示例响应参数:
{
"code": 10000,
"data": {
"syncHistoryId": 1111
},
"message": "success"
}
2
3
4
5
6
7
# 3. 创建项目、设置或修改匹配条件
接口说明
创建项目、项目阶段、项目阶段的匹配条件、项目阶段的工作表,以便后续录入产品并匹配参考价格。
示例-同步组织结构信息URL示例
POST https://srm.api.rccchina.com/api/open/v1/audit/create_or_modify_project
接口路径:/audit/create_or_modify_project
请求方式:POST
请求参数
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
project_id | String | ✔️ | 项目唯一标识 |
project_name | String | ✔️ | 项目名称。若project_id 不存在则新建项目,否则修改对应项目名称(不可为空) |
stage | String | ✖️ | 项目阶段名称,默认"预算阶段"。可选:预算阶段 、招标控制价阶段 、结算阶段 、其他 |
sheet | String | ✖️ | 工作表名称,默认"材料设备清单"。若名称不存在则新建 |
scope | Object | ✖️ | 搜索范围(若与已存条件不同,则触发重新搜索) |
scope字段说明
参数名称 | 类型 | 必填 | 说明 | 约束 |
---|---|---|---|---|
price_type | String | ✔️ | 是否含税价,可选:含税 、不含税 | |
area | Array[String] | ✖️ | 首选地区(默认全国),可选值参考地区表 | 慧讯网按省份匹配,信息价按城市匹配 |
other_area | Array[String] | ✖️ | 备选地区 | |
start_at | String | ✖️ | 价格发布时间范围下限(格式:YYYY-MM-DD HH:mm:ss ) | |
end_at | String | ✖️ | 价格发布时间范围上限 | |
brand_level | String | ✖️ | 品牌档次,可选:全部 、高档 、中档 、普通 (默认全部) | |
icc_price_type | String | ✖️ | 慧讯网价格类型,可选:工程价 、市场价 (默认工程价) | |
price_range_match | Boolean | ✖️ | 是否开启价格范围匹配(默认false ,若为true 需填price_range_up 和price_range_down ) | |
price_range_up | Float | ✖️ | 价格匹配上限百分比(范围:0.0-200.0) | |
price_range_down | Float | ✖️ | 价格匹配下限百分比 | |
limit | Integer | ✖️ | 每个价格渠道最多返回条数(可选1-5,默认5) |
示例请求参数
{
"project_id": "addefc19-0f0a-4b5d-ad24-e27b4ad9d0fd",
"project_name": "上海市杨浦区精神卫生中心磁共振成像系统",
"stage": "结算阶段",
"sheet": "费用明细",
"scope": {
"price_type": "含税",
"area": ["广东省", "广西省"],
"other_area": ["江西省"],
"start_at": "2024-06-01 00:00:00",
"end_at": "2025-01-01 00:00:00",
"brand_level": "普通",
"icc_price_type": "市场价",
"price_range_match": true,
"price_range_up": 10.0,
"price_range_down": 20.0,
"limit": 3
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
示例响应参数
{
"code": 10000,
"message": "success",
"data": {}
}
2
3
4
5
注意事项
- 项目阶段限制:一个项目最多支持4个阶段。
- 工作表逻辑:若
sheet
名称不存在,则新建工作表;若存在,则更新匹配条件。 - 搜索范围更新:修改
scope
中的任一参数会触发重新匹配。
# 4. 提交待匹配信息
接口说明
将材料加入匹配队列(仅提交不返回即时结果)。
示例-提交待匹配信息URL示例
POST https://srm.api.rccchina.com/api/open/v1/audit/match_products
接口路径:/audit/match_products
请求方式:POST
请求参数
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
project_id | String | ✔️ | 项目唯一标识 |
stage | String | ✖️ | 项目阶段名称(默认“预算阶段”) |
sheet | String | ✖️ | 工作表名称(默认“材料设备清单”) |
products | Array[Object] | ✔️ | 产品数据集合(至少1个元素) |
products字段说明:
参数名称 | 类型 | 必填 | 说明 | 约束 |
---|---|---|---|---|
uuid | String | ✔️ | 产品唯一标识(最长32位UUID) | |
name | String | ✔️ | 产品全称 | |
channel | Array[String] | ✖️ | 渠道,可选:慧讯网 、信息价 、中标价 (默认全选) | |
spec | String | ✖️ | 规格型号 | |
brand | String | ✖️ | 品牌 | |
unit | String | ✖️ | 计量单位 | |
price_with_tax | Float | ✖️ | 含税单价(保留两位小数) | |
price_without_tax | Float | ✖️ | 不含税单价(保留两位小数) | |
amount | Float | ✖️ | 采购/使用数量 | |
remark | String | ✖️ | 其他说明 |
示例请求参数:
{
"project_id": "addefc19-0f0a-4b5d-ad24-e27b4ad9d0fd",
"stage": "结算阶段",
"sheet": "费用明细",
"products": [
{
"uuid": "5f4d3b2a-1e0f-4a3c-9b8d-6e7f8a9b0c1d",
"name": "PVC电工套管",
"channel": ["慧讯网", "信息价", "中标价"],
"spec": "Φ20mm",
"brand": "联塑",
"unit": "米",
"price_with_tax": 4.5,
"price_without_tax": 3.5,
"amount": 100.0,
"remark": "家庭装修"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
示例响应参数:
{
"code": 10000,
"message": "success",
"data": {}
}
2
3
4
5
# 5. 获取匹配结果
接口说明
查询材料匹配结果(包含慧讯网价格、信息价、政府中标价等数据)。需等待5-30分钟处理时间。
A类数据、B类数据有不同限制,可在调用接口时指定返回哪一类数据。A类数据、B类数据的区别,详见下方响应结果的说明。
示例-获取匹配结果URL示例
POST https://srm.api.rccchina.com/api/open/v1/audit/get_products_result
接口路径:/audit/get_products_result
请求方式:POST
请求参数:
参数名称 | 类型 | 必填 | 描述 | 约束 |
---|---|---|---|---|
uuids | Array[String] | ✔️ | 需要查询的产品UUID列表 | 最多同时查询100个 |
extended | Boolean | ✖️ | 是否需要返回B类数据(默认false) | B类数据会返回额外的信息,也有一套单独的限制 |
示例请求参数:
{
"uuids": [
"5f4d3b2a-1e0f-4a3c-9b8d-6e7f8a9b0c1d",
"8a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d"
]
}
2
3
4
5
6
响应结果
data.list
字段说明:
参数名称 | 类型 | 说明 |
---|---|---|
id | String | 请求参数中的 UUID |
name | String | 产品全称(来自 /api/open/v1/audit/match_products 接口保存的值) |
spec | String | 规格型号(来自 /api/open/v1/audit/match_products 接口保存的值) |
unit | String | 单位(来自 /api/open/v1/audit/match_products 接口保存的值) |
brand | String | 品牌(来自 /api/open/v1/audit/match_products 接口保存的值) |
remark | String | 其他说明(来自 /api/open/v1/audit/match_products 接口保存的值) |
price_with_tax | Float | 含税单价(保留两位小数,来自匹配接口保存的值) |
price_without_tax | Float | 不含税单价(保留两位小数,来自匹配接口保存的值) |
amount | Float | 数量(来自 /api/open/v1/audit/match_products 接口保存的值) |
icc_price | Object | 慧讯网价格(仅当 channel 含“慧讯网”时返回) |
inf_price | Object | 信息价(仅当 channel 含“信息价”时返回) |
gov_price | Object | 中标价(仅当 channel 含“中标价”时返回) |
# icc_price 字段说明
参数名称 | 类型 | 说明 |
---|---|---|
progress | String | 匹配进度:fresh (未开始)、pending (匹配中)、found (匹配到)、nothing (无结果) |
avg_price | Float | 平均价格(保留两位小数) |
samples | Array[Object] | 匹配结果(最多返回 scope.limit 条) |
samples 字段说明:
参数名称 | 类型 | 说明 | 是否B类数据 |
---|---|---|---|
name | String | 产品全称 | ✖️ |
spec | String | 规格型号 | ✖️ |
brand | String | 品牌 | ✖️ |
area | String | 地区 | ✖️ |
price | Float | 价格(保留两位小数) | ✖️ |
publish_date | Date | 发布日期 | ✖️ |
with_carriage | Boolean | 是否含运费 | ✖️ |
with_tax | Boolean | 是否含税 | ✖️ |
tax | Float | 税率 | ✖️ |
link | String | 慧讯网AI比价数据系统网页链接 | ✖️ |
firm_name | String | 供应商名称 | ✔️ |
contacts | Array[Object] | 联系人 | ✔️ |
screenshot | String | 慧讯网截图文件地址 | ✔️ |
quotation | String | 报价单文件地址 | ✔️ |
# inf_price 字段说明
参数名称 | 类型 | 说明 |
---|---|---|
progress | String | 匹配进度:fresh (未开始)、pending (匹配中)、found (匹配到)、nothing (无结果) |
avg_price | Float | 平均价格(保留两位小数) |
samples | Array[Object] | 匹配结果(最多返回 scope.limit 条) |
samples 字段说明:
参数名称 | 类型 | 说明 | 是否B类数据 |
---|---|---|---|
name | String | 产品全称 | ✖️ |
spec | String | 规格型号 | ✖️ |
area | String | 地区 | ✖️ |
price | Float | 价格(保留两位小数) | ✖️ |
link | String | 慧讯网AI比价数据系统网页链接 | ✖️ |
publish_date | Date | 发布日期 | ✖️ |
# gov_price 字段说明
参数名称 | 类型 | 说明 |
---|---|---|
progress | String | 匹配进度:fresh (未开始)、pending (匹配中)、found (匹配到)、nothing (无结果) |
avg_price | Float | 平均价格(保留两位小数) |
samples | Array[Object] | 匹配结果(最多返回 scope.limit 条) |
samples 字段说明:
参数名称 | 类型 | 说明 | 是否B类数据 |
---|---|---|---|
name | String | 产品全称 | ✖️ |
spec | String | 规格型号 | ✖️ |
brand | String | 品牌 | ✖️ |
area | String | 地区 | ✖️ |
price | Float | 价格(保留两位小数) | ✖️ |
link | String | 慧讯网AI比价数据系统网页链接 | ✖️ |
publish_date | Date | 公告发布日期 | ✖️ |
announcement_name | String | 公告名称 | ✔️ |
firm_name | String | 中标公司名称 | ✔️ |
screenshot | String | 截图 | ✔️ |
# 示例响应参数
{
"code": 10000,
"message": "success",
"data": {
"list": [
{
"id": "5f4d3b2a-1e0f-4a3c-9b8d-6e7f8a9b0c1d",
"name": "PVC电工套管",
"spec": "Φ20mm",
"unit": "米",
"brand": "联塑",
"remark": "家庭装修",
"price_with_tax": "4.5",
"price_without_tax": "3.5",
"amount": "100.0",
"icc_price": {
"progress": "found",
"avg_price": "4.51",
"samples": [
{
"name": "PVC电工套管",
"spec": "Φ20mm",
"brand": "联塑",
"area": "北京",
"price": "4.51",
"publish_date": "2024-01-01",
"with_carriage": true,
"with_tax": true,
"tax": "0.1",
"link": "",
"firm_name": "瑞达恒",
"screenshot": "",
"quotation": "",
"contacts": [
{
"email": "123@qq.com"
"name": "张三",
"phones": ["13888888888"],
}
],
}
]
},
"inf_price": {
"progress": "found",
"avg_price": "4.51",
"samples": [
{
"name": "PVC电工套管",
"spec": "Φ20mm",
"area": "北京",
"price": "4.51",
"link": ""
}
]
},
"gov_price": {
"progress": "found",
"avg_price": "4.51",
"samples": [
{
"name": "PVC电工套管",
"spec": "Φ20mm",
"brand": "联塑",
"area": "北京",
"price": "4.51",
"link": "",
"announcement_name": "中标公告",
"firm_name": "瑞达恒",
"screenshot": ""
}
]
}
}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
注意事项:
- 匹配队列处理需5-15分钟,请勿即时查询结果
- 价格字段单位为人民币元,保留两位小数
- 单次请求最多查询100个UUID
# 五、通用接口响应码介绍
分类 | 示例值 | 描述 |
---|---|---|
正常的响应码 | 10000 | 接口成功响应 |
影响严重的错误码 | -999 | 系统异常 |
-4 | 传递的token为空 | |
接口调用校验失败的异常码 | 129 | 应用密钥标识编码错误 |
127 | 该用户个人账号标识有误/未在系统找到当前个人账号 | |
126 | token有误或已过期 | |
125 | 应用密钥标识有误 | |
124 | 用户账号不存在 | |
611 | 使用量已达到上限 |
# 六、安全限制说明
为保障数据安全,以上接口调用会有以下安全措施:
1.仅限允许白名单内IP访问(需要联系客服添加);
2.每分钟内调用接口次数不得超过20次;
3.每日获取产品数据不超过5000条(同一产品不重复计算);
4.定期更换应用secretKey,并使用文档中约定安全验证方式进行访问。
如未遵循以上说明,会被屏蔽访问或锁定账号,如有疑问请随时联系您的售后服务人员。