2026-08-27 消费三阶段原始读卡响应展示变更记录
需求
在消费前读卡、消费结果和消费后读卡的现有摘要下方,以小号黑色备注显示对应原始读卡器返回数据。后续确认原始字节由应用封装为 JSON,字段名使用英文,不再显示中文翻译标签。
实际改动
- 三个结果区域各增加独立原始响应备注行,不改变现有业务摘要。
- 备注统一使用 15sp 黑色字体和 2dp 上间距,尺寸通过资源集中维护。
- 页面备注标题调整为“原始数据(JSON)”,避免把应用封装的 JSON 描述成读卡器直接返回的格式。
- 消费前/后使用紧凑 JSON 显示应用序列、基础信息、卡状态、金额信息及两个钱包的 APDU 数据区;字段名为
asn、base、status、amount、main_wallet 和 subsidy_wallet,字段值为大写十六进制。
- 消费结果使用紧凑 JSON 显示钱包类型、初始化、PSAM 计算、卡扣款和 PSAM 确认响应;两钱包扣款时按执行顺序分两行显示。
- 没有收到响应时 JSON 值为
null;收到零长度数据时为 "",不使用中文占位文本。
- 等待、处理中和无数据状态会清理上一笔内容并显示对应占位提示。
- 结果模型保留原始响应,兼容原有构造方法和既有功能。
- 页面展示的是协议层完成 CRC/状态校验后的原始 APDU 数据区;JSON 外壳由应用生成,读卡器本身不返回 JSON,字段值不重新计算或拼装业务数据。
测试与验证
- 前一版使用 JDK 8 完成 70 个全量单测及 Debug 构建。
- 本次 JSON 调整使用 JDK 8 隔离运行 5 个相关 JUnit 测试,结果全部通过。
- 完整 Gradle 单测及构建已尝试,但被工作区中与本需求无关的设置页回调接口不一致阻断:
SettingActivity 仍实现旧回调,而 SettingTab 已要求实现 onSettingTabSelected(int)。
- 本次 JSON 调整暂未产出经过完整构建验证的新 APK。
验收边界
需在目标设备完成真实消费,检查长 JSON 的换行和整屏可读性。JSON 是应用对原始字节的结构化封装,不是读卡器直接返回的 JSON。若需状态字、CRC 或 HID 报告头,应另行扩展为完整线缆帧抓取。
未执行任何 Git 写操作。