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-Type | string | 是 | application/json | 请求正文格式 |
本接口不需要传入 account、pwd、key 三个请求头字段。
4. 请求参数
JSON 请求体
| 参数 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|
| paycode | string | 是 | 非空;本系统个人动态付款码 | 小程序付款二维码扫码原文 |
| equipment_code | string | 是 | 非空;对应未删除设备 | 发起查询的设备编号 |
兼容带 C 前缀、不带前缀,以及扫码枪附带首尾空格或 \r\n 的结果。
{
"paycode": "C68ca123456789",
"equipment_code": "EQ-001"
}
5. 成功响应
HTTP 状态码:200
{
"code": 0,
"message": "查询成功",
"data": {
"staff_uuid": "staff-uuid-001",
"staff_name": "张三"
}
}
| 字段 | 类型 | 必有 | 说明 |
|---|---|---|---|
| code | integer | 是 | 0 表示查询成功 |
| message | string | 是 | 结果说明 |
| data | object | 是 | 人员信息 |
| data.staff_uuid | string | 成功时是 | 组织人员 UUID |
| data.staff_name | string | 成功时是 | 人员姓名 |
成功判断:设备端必须以 code == 0 判断业务成功,不能只判断 HTTP 200。
6. 失败响应
业务失败时 HTTP 状态码仍为 200:
{
"code": 1,
"message": "该码已过期",
"data": []
}
| 场景 | code | message | 设备端建议处理 |
|---|---|---|---|
| 未传或传入空 paycode | 1 | 缺少参数:paycode | 检查扫码结果和请求组装 |
| 未传或传入空 equipment_code | 1 | 缺少参数: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. 服务端校验规则
- 校验
equipment_code非空,并查询编号相同且del_flag=0的设备。 - 去除扫码原文首尾空白和扫码结束符。
- 以单个大写
C开头时移除系统展示前缀。 - 查询未删除的个人动态付款码,内部类型为
type=4。 - 校验付款码未使用且未过期。
- 查询未删除的账号和组织人员。
- 只返回
staff_uuid、staff_name。
9. 安全与副作用边界
- 接口不执行
checkApiAuth,无需传account、pwd、key。 equipment_code必须对应未删除设备,用于确认调用设备,不作为登录凭据。- 不返回手机号、证件号、余额、账号 ID 等额外信息。
- 不修改付款码
is_use,不创建订单,不扣款,不修改余额。 - 普通日志不得记录完整付款码。
- 接口只负责识别人;营养报告应由设备使用
staff_uuid调用对应业务接口。
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 |