基本信息
接口地址
https://api.qixin.com/APIService/enterprise/getFoodSafe数据格式
JSON
请求方式
GET
请求示例
https://api.qixin.com/APIService/enterprise/getFoodSafe?keyword=秦皇岛市同德餐饮有限公司烤鸭店描述
通过企业名称/统代/注册号查询食品安全抽检公布结果
请求参数 (Headers)
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
Auth-Version |
String | 是 | 2.0(参数值),固定传入:2.0 |
appkey |
String | 是 | 启信慧眼数据开放平台获取 ,获取方式:个人中心-安全中心-API 密钥,获取appkey的同时,请完成IP白名单的配置:个人中心-安全中心-API IP白名单设置,如未配置,接口调试会报错“104 未添加IP白名单” |
timestamp |
String | 是 | UNIX时间戳,精确到毫秒,示例:1656921036000,当前系统时间近10分钟有效 |
sign |
String | 是 | 请求认证签名,对appkey+timestamp+secret_key进行md5或者sha256摘要计算的结果,小写字符串(实际加密不带入‘+’) |
请求参数 (Query)
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
keyword |
String | 是 | 企业全名/注册号/统一社会信用代码 |
skip |
Number | 否 | 跳过条目数(默认为0,单页返回20条数据) |
type |
String | 否 | 企业性质(0被抽检单位1生产企业),默认为0 |
响应参数
| 参数名 | 类型 | 长度 | 描述 |
|---|---|---|---|
statusdata.status |
String | 10 | 返回结果状态 |
messagedata.message |
String | 255 | 返回结果消息 |
signdata.sign |
String | 32 | 数据签名 |
datadata.data |
Object | 0 | 返回查询结果,如果没有匹配记录则返回空。具体字段含义见下表 |
totaldata.data.total |
Number | 0 | 返回列表中记录总数 |
itemsdata.data.items |
Array | 0 | 数据列表 |
food_namedata.data.items.food_name |
String | 50 | 食品名称 |
checked_namedata.data.items.checked_name |
String | 100 | 被抽检单位名称 |
checked_company_provincedata.data.items.checked_company_province |
String | 10 | 被抽检单位所在省份 |
enamedata.data.items.ename |
String | 255 | 标称生产企业名称 |
checked_company_addressdata.data.items.checked_company_address |
String | 255 | 标称生产企业地址 |
production_datedata.data.items.production_date |
String | 20 | 生产日期/批号 |
modeldata.data.items.model |
String | 100 | 规格型号 |
times_alldata.data.items.times_all |
String | 10 | 抽检总次数 |
times_unqualifieddata.data.items.times_unqualified |
String | 10 | 不合格次数 |
result_alldata.data.items.result_all |
String | 100 | 抽检结果统计 |
resultdata.data.items.result |
Number | 3 | 抽检结果:0:不合规;1:合格 |
unqualified_detaildata.data.items.unqualified_detail |
String | 255 | 不合格详情{"item_name":"检测项目名称 ","num_standard":"标准值 ","num_detect":"检测值"} |
urldata.data.items.url |
String | 255 | 链接 |
is_historydata.data.items.is_history |
String | 3 | 历史标记;0-否,1-是 |
numdata.data.num |
Number | 0 | 当前返回列表的总条数 |
响应示例
JSON
{
"status": "200",
"message": "操作成功",
"sign": "c037dad5ddf325c72deb8ca8946ae19f",
"data": {
"total": 2,
"num": 2,
"items": [
{
"food_name": "酱牛肉(自制)",
"checked_name": "秦皇岛市同德餐饮有限公司烤鸭店",
"checked_company_province": "河北省",
"ename": "秦皇岛市同德餐饮有限公司烤鸭店",
"checked_company_address": "河北省秦皇岛市北戴河区联峰山路30-8号",
"production_date": "-",
"model": "\/",
"times_all": 1,
"times_unqualified": 0,
"result_all": "2014年以来共抽检1次, 其中不合格次数为0次, 合格次数为1次。",
"result": 1,
"unqualified_detail": "-",
"url": "https:\/\/spcjsac.gsxt.gov.cn\/detail.html?type_id=&foodId=4335477&goods_enterprise=秦皇岛市同德餐饮有限公司烤鸭店",
"is_history": 0
},
{
"food_name": "老醋蛰头(餐饮)",
"checked_name": "秦皇岛市同德餐饮有限公司烤鸭店",
"checked_company_province": "河北省",
"ename": "秦皇岛市同德餐饮有限公司烤鸭店",
"checked_company_address": "河北省秦皇岛市北戴河区联峰山路30-8号",
"production_date": "-",
"model": "\/",
"times_all": 1,
"times_unqualified": 1,
"result_all": "2014年以来共抽检1次, 其中不合格次数为1次, 合格次数为0次。",
"result": 0,
"unqualified_detail": "{'item_name': '铝的残留量(以即食海蜇中Al计)', 'num_standard': '≤500mg\/kg', 'num_detect': '1198mg\/kg'}",
"url": "https:\/\/spcjsac.gsxt.gov.cn\/detail.html?type_id=&foodId=4025635&goods_enterprise=秦皇岛市同德餐饮有限公司烤鸭店",
"is_history": 0
}
]
}
}
代码示例
javascript
let request = require('request');
let urlEncode = require('urlencode');
let crypto = require('crypto');
let baseUrl = 'https://api.qixin.com/APIService/enterprise/getFoodSafe';
let appkey = '正式appkey';
let secretKey = '正式secret_key';
let timeStamp = new Date().getTime();
const hash = crypto.createHash('md5');
let sign = hash.update(appkey + timeStamp + secretKey).digest('hex');
let urlParams = {
keyword: 'keyword的值',
skip: 'skip的值',
type: 'type的值'
}
let concatParams = []
for (let key in urlParams) {
concatParams.push(key + '=' + urlParams[key]);
}
let options = {
'method': 'GET',
'url': baseUrl + '?' + concatParams.join('&'),
'headers': {
'Connection': 'keep-alive',
'Auth-version': '2.0',
'appkey': appkey,
'timestamp': timeStamp,
'sign': sign
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});