结论:所有订单在第一次完整读卡后统一校验卡状态;只有状态 241 / 0xF1 可以继续,挂失、冻结及未知状态卡均在扣款前拦截并提示换卡。
UC-CARD-STATUS-001 / Done / READY241 继续原有零元核验或扣款流程,其他状态停止后续硬件交易。241 / 0xF1 正常;243 / 0xF3 挂失;244 / 0xF4 冻结;其他值未知。除正常状态外全部不可消费。241、243、244 及一个其他状态的测试卡完成真机视觉与硬件验收。CardConsumptionStatusPolicy,集中管理正常、挂失、冻结和未知状态,避免多个入口硬编码不同规则。ConsumptionCardTransactionExecutor 在首次读卡快照回调后、零元分支和扣款阶段之前执行状态校验。NewcapecProtocol 继续在协议扣款入口校验卡状态,并复用统一策略,防止其他调用入口绕过。CARD_STATUS_REJECTED,并记录 CARD_STATUS_INVALID、十进制状态、十六进制状态和分类。CardConsumptionStatusPolicy 和 onCardRejected() 编译失败。JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:testDebugUnitTest --rerun-tasks,195 个测试,0 failure、0 error、0 skipped。JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:assembleDebug,构建成功。app/build/outputs/apk/debug/app-debug.apk,大小 67134272 字节,SHA-256 7774a6730b0a3d81408bb68e672b3ff358e4350720481935cdf2bfa366ed3ec4。本次未执行暂存、提交、推送、拉取、分支切换或其他 Git 写操作。