相机扫码

基本信息

项目 内容
路由 /pages/scan/scan
页面目标 让商户使用设备后置摄像头扫描人才动态码,并确认核销。
进入方式 首页“扫码核销”主操作。
负责人/更新时间 待指定 / 2026-07-29

功能点

编号 功能 说明 当前状态
SC-001 原生相机 使用小程序 camera 后置相机和 scanCode 模式,并监听相机错误。 已完成,待真机验证
SC-002 原生层覆盖 扫描框、遮罩、返回按钮和状态卡使用 cover-view / cover-image。 已完成,待真机验证
SC-003 扫码解析 扫码原文仅用于请求 POST /api/merchant/verification/scan,不写日志或持久缓存。 已接入
SC-004 二次确认核销 解析成功后显示脱敏持卡人信息并要求确认;确认请求携带幂等键。 已接入
SC-005 状态恢复 支持核验中、确认中、核销成功、普通失败重试、非当前商户独立失败页和相机拒绝。 已完成
SC-006 返回 返回时取消当前请求并回到首页。 已完成
SC-007 免费入住券的「超过天数」文案 扫到酒店免费入住券时,核销页显示「免费入住N天」并附上门店配置的超出规则:到店消费配的是折扣显示「门市价X折」,配的是立减显示「立减X元」,都没配则不显示这一行(discountText)。 已接入

操作说明

  1. 从首页进入相机扫码页,授权后将人才动态码置于扫描框内。
  2. 扫码结果先由后台解析;非当前商户等商户范围错误进入独立失败结果页,其他解析失败可重试或重新扫描。
  3. 解析成功后确认核销。成功后展示核销结果;失败时保留当前结果并可重试。
  4. 点击左上角返回会取消当前请求并回到首页。

接口与数据

数据项/动作 接口标识 参数 返回字段 状态
扫码解析 POST /api/merchant/verification/scan scanResult verificationId、可核销状态、提示文案及脱敏用户摘要 已接入
确认核销 POST /api/merchant/verification/confirm verificationId、X-Idempotency-Key 核销编号、结果、核销时间 已接入

验收清单

  • [x] 首页扫码核销入口可跳转到相机扫码页。
  • [x] 已实现扫描、服务端解析、二次确认、成功反馈和失败重试。
  • [x] 非当前商户二维码使用独立核销失败页提示,返回后恢复扫码状态。
  • [x] 扫码不会直接消耗动态码;仅确认成功才写入核销记录。
  • [x] 重复确认通过幂等键返回同一次核销结果。
  • [ ] 已真机验证相机授权、二维码识别、权限拒绝、原生层覆盖和网络重试。

凭证识别规则

  • 相机页面只保留一个扫码框,不提供人工选择凭证类型的按钮。
  • 服务端根据二维码令牌的受信数据源自动识别:TALENT_CODE(人才码)、ORDER_CODE(订单核销码)和 FREE_STAY_CODE(免费入住核销码)。
  • 扫码仅创建短时待确认记录;操作员确认后才会消耗对应凭证。订单码会把已支付订单置为已核销,免费入住码会原子扣减一次可用次数。
  • 非当前商户、已使用、已过期或订单未支付的二维码统一拒绝,不向客户端暴露可伪造的凭证类型判断逻辑。