OnecardDemo 本地消费与服务器单点功能实施计划

执行方式:当前会话逐项实施,不创建分支、不提交 Git;每项先写失败测试,再做最小实现。
架构:HID/APDU、消费协调、SOAP/HTTP、Activity 四层分离。

执行状态:代码、页面、自动测试和文档任务已完成;Android 真卡消费、补助余额卡和真实服务器仍按硬件/现场门禁单独验收。

Task 1:HID 长请求分包

为 36 字节 PSAM 请求增加 offset 0/24 的两片发送;中间片只写,最后一片读取响应。测试复现 Bus Hound 报告。

Task 2:消费 APDU 与模型

建立钱包、请求、结果和 APDU 编解码模型;用 2026-08-23 14:26:00 的 1 分样本逐字节断言四条 APDU。

Task 3:单钱包消费

实现 PSAM 初始化、卡/PSAM 通道 APDU 和扣款状态;覆盖账号不一致、余额不足、扣款结果不确定和 PSAM 确认失败。

Task 4:补贴优先

覆盖补助足够、拆两笔、补助为零、总余额不足和部分成功。成功过的交易不回滚、不重试。

Task 5:SOAP 层

实现 8 个 SOAPAction、XML 转义、Fault/计数解析、16 字段上传结构和分段用户下载;真实响应待现场服务器。

Task 6:Android 页面

主页面新增本地消费区域;服务器单点页面提供连接、查询、上传和独立可复制结果区。

Task 7:文档和变更记录

同步更新通讯协议,新增与页面/代码 1:1 的字段说明,并更新 Markdown/HTML 变更记录。

Task 8:验证

运行 testDebugUnitTestassembleDebuglintDebug 和文档一致性检查。现金消费、补助消费和服务器分别执行各自硬件/现场门禁。