条码查询接口返回字段全解:66-22 与 66-24 的字段差异和失败文案
# 条码查询接口返回字段全解:66-22 与 66-24 的字段差异和失败文案
> 接口:showapi 条码查询接口(apiCode=66)· 接入点 66-22 / 66-24|请求方式:POST/GET|返回格式:JSON|适用人群:已跑通首次调用、要正式解析数据的开发者|阅读时间:约 8 分钟|最后实测核对:2026-09-05
**核心要点**
- 业务数据全在 `showapi_res_body` 里,两个接入点字段不通用:66-22 回商品属性,66-24 回用药信息,连商品名字段名都不同(`goodsName` vs `name`)。
- 失败时两接入点的文案体系完全不同:66-22 实测有 3 种 remark,66-24 有 2 种,排错只能靠它。
- `price` 实测常为空、`note` 是原始拼接文本——这两个字段按"可能有"设计,别按"必有"。
拿到返回先分清三层:`showapi_res_code` 管调用层,`showapi_fee_num` 管计费,`showapi_res_body` 里才是业务数据。showapi 条码查询接口(apiCode=66)两个接入点的字段差异不小,这篇把字段表和失败文案一次讲全,全部来自 2026-09-05 的真实请求与官方文档交叉核对。
## 66-22 商品条码:返回字段表
| 字段 | 含义 | 实测备注 |
|------|------|---------|
| `ret_code` | `"0"` 成功,`-1` 失败 | OpenAPI 标 String,比较时统一转字符串 |
| `remark` | 结果描述 | 成功为"查询成功!" |
| `code` | 回显条形码 | 与请求一致 |
| `goodsName` | 商品名称 | 必有 |
| `manuName` / `manuAddress` | 厂商 / 地址 | 地址实测可能为空 |
| `spec` / `trademark` | 规格 / 品牌 | — |
| `price` | 参考价格(元) | **实测常为空字符串** |
| `goodsType` | 商品分类(`>>` 分层) | 实测层级与 note 内分类可能不一致,以当次返回为准 |
| `gpc` / `gpcType` | GPC 分类代码 / 名称 | — |
| `keyword` / `qs` | 关键词 / 生产许可证号 | 可能空 |
| `ycg` | 原产地 | 可能空 |
| `width` / `hight` / `depth` / `gw` / `nw` | 宽 / 高 / 深 / 毛重 / 净重 | 实测多为空 |
| `description` | 形态描述 | 可能空 |
| `img` / `imgList` / `sptmImg` | 图片 / 图片列表 / 条码图 | URL 时效 24 小时(官方口径),查到即下载 |
| `note` | 备注信息 | **原始拼接文本**,见下 |
| `flag` | 操作是否成功 | 布尔语义,成功判断仍以 `ret_code` 为准 |
`note` 的实测长相(同一支强生沐浴露,2026-09-05):
```
checkResult:1;备注:logout_flag:0;login_date:Jul 28 1993 12:00:00:000AM;
valid_date:Jul 28 2023 12:00:00:000AM;宽:7.8;单位:CM;高:16.1;深:3.7;
英文名称:Johnson's milk+rice bath 300ml;关键字:沐浴露;销售单位:BX;
形态描述:个人护理用品;毛重:339;上市时间:2018-08-01;产地:上海;
```
里面混着 `logout_flag`、`login_date` 这类数据库原始字段,不同条码拼进去的内容还不一样。按"读文本"处理(比如正则抠"英文名称:…"),别当结构化字段逐个取。
## 66-24 药品条码:返回字段表
| 字段 | 含义 | 实测备注 |
|------|------|---------|
| `ret_code` | 0 成功,-1 失败 | OpenAPI 标 number |
| `name` | 产品名称 | 注意字段名与 66-22 不同 |
| `spec` / `trademark` | 规格 / 商标 | — |
| `basis` | 主要成分 | 文本,";"分隔 |
| `character` / `purpose` | 性状 / 功能主治 | 可能空 |
| `dosage` | 用法用量 | 文本直出,不改写 |
| `taboo` / `consideration` / `other` | 禁忌 / 注意事项 / 不良反应等 | 可能空;consideration 内自带编号 |
| `storage` / `validity` | 贮藏 / 有效期 | 实测可能为空 |
| `approval` | 批准文号 | 药品"国药准字"、化妆品"妆网备字"等,格式即分类线索 |
| `manuName` / `manuAddress` | 生产厂家 / 地址 | — |
| `img` | 图片 | 24 小时时效 |
| `type` | 1 = OTC,2 = 非药品 | **实测还有字符串形态"非药品"**,判断时转字符串 |
| `note` | 备注 | 同为拼接文本 |
| `remark` / `code` | 描述 / 回显码 | — |
## 失败文案对照表(实测 2026-09-05,5 次失败全部不扣费)
| 接入点 | remark 原文 | 触发场景(实测输入) | 判定 | 下一步 |
|--------|------------|--------------------|------|--------|
| 66-22 | 条形码不正确! | `12345`(5 位) | 格式无效 | 检查扫码枪输出、位数 |
| 66-22 | 条形码不正确,现在可支持 UPC EAN-13 EAN-8 | `6953446001745`(13 位合法但库中无) | 格式合法、未收录 | 回退 66-24 或人工补录;此文案顺带给出了制式口径:UPC、EAN-13、EAN-8 |
| 66-22 | 未查到相关信息! | `049000050110`(美国常见 UPC-A) | 格式合法、未收录 | 同上;UPC 实测覆盖有限,单样本未命中不代表全部不可用 |
| 66-24 | 无效的条形码! | `6949396500016` | 格式无效(对药品库而言) | 确认是 69 开头药品码 |
| 66-24 | 条形码药品未收录 | `6907595520333` | 合法、药品库无 | 回退 66-22 查商品属性 |
两件事值得强调:失败判定永远用 `ret_code`,别解析中文 remark;66-22 查不到进口 UPC 的文案是"未查到相关信息!",与"条形码不正确"含义不同,前者值得做负缓存后定期重查(库在不定期更新)。
## 生产代码的判错骨架
```python
def classify(body: dict) -> str:
"""返回 'ok' / 'invalid' / 'not_found',决定后续走哪条分支"""
if str(body.get("ret_code")) == "0":
return "ok"
remark = body.get("remark", "")
if "不正确" in remark or "无效" in remark:
return "invalid" # 格式问题:修输入,不回退
return "not_found" # 未收录:可回退另一接入点或负缓存
```
## FAQ
**Q1:66-22 和 66-24 能用同一个返回解析函数吗?**
不建议。字段名不同(`goodsName` vs `name`)、`ret_code` 类型不同(String vs number)、失败文案体系不同。分开写两个解析器,各自维护。
**Q2:查不到到底扣不扣费?**
不扣。2026-09-05 实测 5 次失败请求 `showapi_fee_num` 全部为 0,只有 `ret_code=0` 的成功查询扣 1 次。
**Q3:`note` 里那些 logout_flag、login_date 是什么?**
数据源原始库字段直接拼进了文本。它们不属于接口契约,官方文档也没有承诺这些内容,解析时忽略未知片段、只取你需要的"键:值"。
**Q4:type 到底是数字还是字符串?**
文档枚举是 1(OTC)/ 2(非药品),但实测返回过字符串"非药品"。比较前统一 `str()`,两种形态都能兜住。
**Q5:图片时效到底 1 小时还是 24 小时?**
文档三处口径不一(字段描述"1 小时",接入点说明与 OpenAPI"24 小时",后者还标注自 2023-09-01 起生效)。按更严格的 24 小时处理,策略上"查到即下载"就都不会踩坑。
## 下一步阅读
- [条码查询接口快速开始:一个 code 参数查出商品信息](https://www.showapi.com/guides/barcode-quickstart-66)——第一次调用的完整代码。
- [商品条码信息怎么查:自建数据库、公开数据源与 showapi 条码查询接口对比](https://www.showapi.com/guides/barcode-plan-comparison-66)——UPC 覆盖边界的完整分析在这篇。
- [条码查询接口的药品条码用法:用法用量、批准文号与 OTC 标识怎么读](https://www.showapi.com/guides/barcode-pharmacy-66)——66-24 字段的实战用法。
- **本系列共 6 篇**:查看[条码查询接口指南总目录](https://www.showapi.com/guides/barcode-guides-66)