到站码核验

用户到站后,健康站设备扫描用户 App 上展示的到站码, 完成身份确认并开始检测。核验流程支持两种模式:到站码直接核验和扫码授权会话。

核验流程

模式一:到站码直接核验(推荐)

  1. 用户打开 App,进入「我的预约」展示到站码(6 位字母数字,动态刷新)
  2. 健康站设备扫描到站码,调用「核验到站码」接口
  3. 接口验证成功后,返回用户基本信息和本次检测项目
  4. 检测开始,设备数据上报

模式二:健康站扫码授权会话

  1. 健康站设备生成授权二维码,调用「创建扫码会话」接口获取 session_id
  2. 用户用 App 扫描二维码,同意授权
  3. 设备轮询「查询会话状态」,确认用户已授权后开始检测

核验到站码

POST/api/v1/health-station/verify-code

健康站设备扫描用户 App 上的到站码后调用此接口。 需携带设备侧鉴权头(X-App-Id + X-Signature)。

请求体

字段类型必填说明
codestring用户 App 展示的到站码(6 位字母数字)
points_codestring当前健康站编码,用于校验用户预约是否归属此站

成功响应200 OK):

{
  "success": true,
  "code": 0,
  "data": {
    "user_id": 10086,
    "member_name": "张三",
    "member_gender": "male",
    "member_birth_date": "1985-06-15",
    "appointment_no": "APT202604010001",
    "check_items": ["血压", "血氧", "心率", "体成分"]
  }
}

创建扫码会话

POST/api/v1/health-station/create-session

健康站设备在展示二维码前调用,获取一个临时 session_id。 二维码内容为包含 session_id 的深链接,用户 App 扫码后完成授权。

响应

{
  "success": true,
  "code": 0,
  "data": {
    "session_id": "ses_xxxxxxxxxxxxxxxx",
    "qr_content": "xiaobao://station/auth?sid=ses_xxxxxxxxxxxxxxxx",
    "expires_at": "2026-04-01T10:05:00+08:00"
  }
}

查询会话状态

GET/api/v1/health-station/session-status

查询参数

参数类型必填说明
session_idstring创建会话时返回的 session_id

建议设备每 2 秒轮询一次,状态变为 authorized 后停止轮询并开始检测。 超时(默认 5 分钟)后状态变为 expired,需重新创建会话。

status 值含义
pending等待用户扫码授权
authorized用户已授权,可开始检测
cancelled用户主动取消
expired会话超时,需重新创建

取消会话

POST/api/v1/health-station/cancel-session

设备侧主动取消会话(如用户离开、超时前主动清理)。传 { "session_id": "..." } 即可。

异常处理

场景错误码处理建议
到站码无效或已使用CHECKIN_CODE_INVALID(422)提示用户在 App 内刷新到站码后重试
预约不属于当前健康站CHECKIN_STATION_MISMATCH(422)确认用户是否预约了正确的健康站
预约已过期或已取消APPOINTMENT_NOT_VALID(422)引导用户重新预约
会话已过期SESSION_EXPIRED(410)调用创建会话接口重新生成二维码