Phase 4:发票·核销·票夹(QR签名+Feistel短码+出票链路) #17

Open
opened 2026-04-20 15:45:47 +00:00 by sileya-ai · 0 comments

阶段目标

完成 Phase 4 三大功能:

  1. C端票夹:用户查看已购票 + QR码 + Feistel短码 + 核销状态
  2. B端核销页:工作人员扫码/输入短码 → 票验证 → 核销
  3. 出票链路闭环:支付成功 → 生成 vr_tickets → 用户可见票

码体系设计(已确认)

QR码(JWT签名,防无人值守暴力破解)

  • Payload: {id, g(goods_id), iat, exp, sig}
  • 签名: HMAC-SHA256(签名字符串, secret)[0:8]
  • 有效期: 30min,客户端本地缓存

短码(Feistel混淆)

  • goods_id(base36×4位固定) + ticket_id(base36×可变) → Feistel8混淆
  • 长度: 6~8字符,不区分大小写
  • per-goods key: HMAC-SHA256(master_secret, goods_id)

参考文档

  • docs/PHASE_4_PLAN.md(完整规划)

调研确认

  • hook在pay_status=1后触发,正确
  • extension_data完全可读
  • API路由PluginsService::PluginsControlCall动态映射
  • JsBarcode v3.11.5已内置
  • ⚠️ 需新建api/和index/目录

验收标准

  • 支付成功 → vr_tickets有记录
  • C端票夹展示QR + 短码 + 核销状态
  • QR 30min缓存逻辑
  • B端扫码核销成功
  • 全链路贯通
## 阶段目标 完成 Phase 4 三大功能: 1. **C端票夹**:用户查看已购票 + QR码 + Feistel短码 + 核销状态 2. **B端核销页**:工作人员扫码/输入短码 → 票验证 → 核销 3. **出票链路闭环**:支付成功 → 生成 vr_tickets → 用户可见票 ## 码体系设计(已确认) ### QR码(JWT签名,防无人值守暴力破解) - Payload: {id, g(goods_id), iat, exp, sig} - 签名: HMAC-SHA256(签名字符串, secret)[0:8] - 有效期: 30min,客户端本地缓存 ### 短码(Feistel混淆) - goods_id(base36×4位固定) + ticket_id(base36×可变) → Feistel8混淆 - 长度: 6~8字符,不区分大小写 - per-goods key: HMAC-SHA256(master_secret, goods_id) ## 参考文档 - docs/PHASE_4_PLAN.md(完整规划) ## 调研确认 - ✅ hook在pay_status=1后触发,正确 - ✅ extension_data完全可读 - ✅ API路由PluginsService::PluginsControlCall动态映射 - ✅ JsBarcode v3.11.5已内置 - ⚠️ 需新建api/和index/目录 ## 验收标准 - [ ] 支付成功 → vr_tickets有记录 - [ ] C端票夹展示QR + 短码 + 核销状态 - [ ] QR 30min缓存逻辑 - [ ] B端扫码核销成功 - [ ] 全链路贯通
sileya-ai changed title from Phase 3 前端:多座位下单 Demo(P0) to Phase 3:支付回调 + 观演人 QR 票生成(vrt_tickets 表写入) 2026-04-21 17:18:17 +00:00
sileya-ai changed title from Phase 3:支付回调 + 观演人 QR 票生成(vrt_tickets 表写入) to Phase 4:发票·核销·票夹(QR签名+Feistel短码+出票链路) 2026-04-22 08:38:59 +00:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sileya-ai/vr-shopxo-plugin#17
There is no content yet.