# Specification Quality Checklist: LINE Pay Online API v4 支付接入

**Purpose**: 在进入 implementation plan 前验证规格完整性和内部一致性

**Created**: 2026-08-12

**Feature**: [spec.md](../spec.md)

## Content Quality

- [x] 已明确用户价值、业务流程、边界和验收场景
- [x] 已完成全部必要章节，无模板占位符
- [x] 实现约束只细化到支付正确性所需的模块、状态、索引和事务边界
- [x] 已记录用户明确接受的 Secret 明文与回显风险

## Requirement Completeness

- [x] 无 `TBD`、`TODO` 或 `[NEEDS CLARIFICATION]`
- [x] `payType=3`、OMG 保持范围、退款范围、定时查询和 App Scheme 均已固化
- [x] 用户故事包含独立测试和验收场景
- [x] Edge Cases 覆盖外部响应丢失、并发、轮换、历史数据、堂食和多门店
- [x] FR-001 至 FR-020 可测试且无相互冲突
- [x] 数据实体、支付/退款状态和日志职责已分离
- [x] 主动 Check 的 `0000/0110/0121/0122/0123` 动作已明确
- [x] Confirm/Refund 未知结果禁止盲目重试
- [x] 历史 `payType=3` 不会仅凭编号触发 LINE 资金操作
- [x] 凭证轮换后旧交易仍能使用原凭证版本
- [x] 支付尝试采用 `1:N` 永不覆盖模型，重复点击复用活跃行，明确终止后重新支付才新增行
- [x] App、回跳、任务、退款和平台历史均有明确且稳定的查询定位规则
- [x] 范围明确排除 OMG 表/日志迁移、部分退款、多门店父单和废弃 ZaloPay 逻辑
- [x] 依赖、假设、Sandbox 限制和生产前真机验收已列出

## Adversarial Review

- [x] LINE Pay v4 API、签名、结果码和回跳时限已由独立对抗子代理复核
- [x] 数据库唯一约束、CAS、未知状态、凭证轮换和任务租约已由独立对抗子代理复核
- [x] 现有订单入口、堂食/多门店、管理前端、权限和 i18n 已由独立对抗子代理复核
- [x] 主代理已合并报告并拒绝“回跳内同步 Confirm”“支付表混入退款状态”“`UNIQUE(dd_id,is_active)`”等不安全设计

## Feature Readiness

- [x] 完整规格可进入用户一次性审阅
- [x] 用户已批准整份书面规格（2026-08-12）
- [x] 已生成 `plan.md`、`research.md`、`data-model.md`、`contracts/api.md` 和 `quickstart.md`
- [x] 已生成 `tasks.md`
- [x] 实现和验证已完成

## Notes

- `1150` 凭证探测不是 LINE 官方专用校验接口；自动启用是用户已批准的业务规则，真实支付能力仍需 Sandbox 端到端验证。
- 回跳页面约 20 秒响应约束与 Confirm 至少 40 秒读取超时存在冲突，因此规格固定为快速中间页 + 异步 Confirm/App 查询。
- Offline 商家扫码后端、测试源码、SQL 迁移记录和规格已完成；JDK 21 定向测试、模块打包、差异、Controller 契约、i18n 与敏感字段检查通过。数据库 DDL、真实 Sandbox/生产商户 Offline 权限验证和前端构建未执行，详见 `tasks.md` T059-T060。
