在设置/支付设置增加“刷卡本地校验”开关。默认开启,保持原有消费前校验行为;关闭后,现有消费入口跳过本地人员库卡号查询,继续原支付流程。
• 覆盖 MainActivity、FreeActivity、FreeNoKeyboardActivity、QuotaActivity、QuotaNoKeyboardActivity 的 16 处消费前本地卡号校验。
• NewQuotaActivity 按用户要求保持不变。支付超时后用于显示姓名的本地查询也保持不变。
• 刷卡支付方式开关、空卡号拦截、设备协议校验、重复支付检查和后续支付流程保持原有职责。
• 新增独立配置键 payment_card_local_validation,默认值为 true,旧设备升级后仍执行本地校验。
• 尝试关闭时先恢复开关为开启并弹出提示:“关闭本地检验,可能造成扣款异常,请谨慎操作。是否继续?”
• 关闭确认复用项目 NewSingleTipPop 提示框,标题为“刷卡本地校验”,确认按钮为“确认关闭”;仅点击确认时保存 false 并显示关闭,取消时保持开启。重新开启直接保存 true。
• 开关实际变更时通过 LocalFileRecorder 写入 local_log:确认关闭记录“支付设置:刷卡本地校验已关闭”,重新开启记录“支付设置:刷卡本地校验已开启”;取消或仅打开提示框不写开关记录。
• CardLocalValidationPolicy 统一读取配置;关闭时不调用 CustomerDatabaseManager 查询,开启时按原规则查找 customer.card_id。
• 各消费页面保留原有失败提示和支付请求调用;设置页负责风险确认和配置持久化。
• 按项目编码要求,将本次涉及的 MainActivity 中已有乱码注释恢复为简体中文,文件保持 UTF-8 无 BOM。
• 使用 JDK 8 执行 CardLocalValidationPolicyTest 和 :app:compileDebugJavaWithJavac,构建成功。测试覆盖默认开启、开启时已知与未知卡、关闭时不访问本地查询。
• git diff --check 通过;已检查 NewQuotaActivity 未修改,16 处消费前校验均接入策略。
• 尚未在真实读卡设备上验证确认弹框及支付接口返回结果。