VWCG-1380 · Device API

系统个人付款码查询人员接口

设备扫描本系统小程序生成的个人付款二维码,服务端校验付款码后返回组织人员 UUID 与姓名。接口全程只读,不占用付款码,不产生支付或订单副作用。

POST设备编号校验只读查询v1.2
请求路径/api/consume/paycodeUserInfo
调用端设备端 / 自研消费机
响应字段staff_uuid + staff_name
代码状态重提 MR #903 审核中

1. 接口概览

项目说明
接口名称系统个人付款码查询人员
请求方法POST
请求路径/api/consume/paycodeUserInfo
鉴权方式不使用 account、pwd、key 请求头;通过 equipment_code 校验设备
请求/响应application/json
接口性质只读查询
当前状态初版 MR #899 已合入;MR #902 已关闭;重提 MR #903 审核中

字段口径:staff_uuid 是组织人员 UUID,不是账号 UUID。接口不消费付款码、不创建订单、不扣款,也不修改余额。

2. 请求地址

POST {baseUrl}/api/consume/paycodeUserInfo

{baseUrl} 由实际部署环境提供。本文档不包含生产域名。

3. 请求头

参数类型必填示例说明
Content-Typestring是application/json请求正文格式

本接口不需要传入 account、pwd、key 三个请求头字段。

4. 请求参数

JSON 请求体

参数类型必填约束说明
paycodestring是非空;本系统个人动态付款码小程序付款二维码扫码原文
equipment_codestring是非空;对应未删除设备发起查询的设备编号

兼容带 C 前缀、不带前缀,以及扫码枪附带首尾空格或 \r\n 的结果。

{
  "paycode": "C68ca123456789",
  "equipment_code": "EQ-001"
}

5. 成功响应

HTTP 状态码:200

{
  "code": 0,
  "message": "查询成功",
  "data": {
    "staff_uuid": "staff-uuid-001",
    "staff_name": "张三"
  }
}
字段类型必有说明
codeinteger是0 表示查询成功
messagestring是结果说明
dataobject是人员信息
data.staff_uuidstring成功时是组织人员 UUID
data.staff_namestring成功时是人员姓名

成功判断:设备端必须以 code == 0 判断业务成功,不能只判断 HTTP 200。

6. 失败响应

业务失败时 HTTP 状态码仍为 200:

{
  "code": 1,
  "message": "该码已过期",
  "data": []
}
场景codemessage设备端建议处理
未传或传入空 paycode1缺少参数:paycode检查扫码结果和请求组装
未传或传入空 equipment_code1缺少参数:equipment_code检查设备编号和请求组装
设备不存在或已删除1设备不存在检查设备编号和后台设备状态
付款码不存在、类型不符或已删除1该码不存在提示用户重新打开本系统小程序付款码
付款码已经被使用1该码已使用提示用户刷新付款码后重扫
付款码超过有效期1该码已过期提示用户刷新付款码后重扫
账号或组织人员不存在/已删除1人员不存在后台检查人员与账号关联关系

7. 调用示例

cURL

curl --request POST '{baseUrl}/api/consume/paycodeUserInfo' \
  --header 'Content-Type: application/json' \
  --data '{"paycode":"C68ca123456789","equipment_code":"EQ-001"}'

设备端处理逻辑

扫描二维码 → 读取原始字符串 → 调用 paycodeUserInfo → code == 0:读取 staff_uuid、staff_name,进入人员业务流程 → code != 0:展示 message,并按错误场景决定重扫或检查设备编号

8. 服务端校验规则

  1. 校验 equipment_code 非空,并查询编号相同且 del_flag=0 的设备。
  2. 去除扫码原文首尾空白和扫码结束符。
  3. 以单个大写 C 开头时移除系统展示前缀。
  4. 查询未删除的个人动态付款码,内部类型为 type=4。
  5. 校验付款码未使用且未过期。
  6. 查询未删除的账号和组织人员。
  7. 只返回 staff_uuid、staff_name。

9. 安全与副作用边界

10. 验证记录

检查项结果
付款码解析专项测试9 tests / 16 assertions,通过
OpenAPI 控制器契约测试20 tests / 60 assertions,通过
OpenAPI 鉴权矩阵测试6 tests / 17 assertions,通过
付款码分类回归测试12 tests / 12 assertions,通过
PHP 7.3 语法检查通过
全量 PHPUnit受仓库既有 ProfilePreservationTest.php 重复声明 config() 阻塞,与本接口改动无关

11. 版本与交付信息

任务分支codex/VWCG-1380-resolve-paycode-user
初版提交534e7ec0d17354f267745769b0484be376fb6cdc
本次契约调整提交7486412729c39fb1c4ad90ddfd0c14c4e86f4bb8
错误提示调整提交83e59b8fe0e31128aeea025a14a500b3d3986f64
初版 MR#899,已合入 release
已取消 MR#902,已关闭
重新提交 MR#903,审核中
合并目标release
文档版本v1.2 / 2026-09-17