支付成功弹框余额显示开关设计

设计日期:2026-09-01

项目仓库:/Users/liang/AndroidStudioProjects/CusumptionMachine

当前实施分支:fix_pay_by_face

背景与现状

消费机当前有两种支付成功弹框:基础版 ShowPaymentSuccessPop 和营养增强版 ShowPaymentSuccessWithNutritionPop。基础版同时被普通支付、国信刷脸支付、记账成功和订单核验成功场景复用;营养增强版由 MainActivity 在营养展示开关开启时使用。

两个弹框目前仅根据余额字符串是否为空决定余额行是否显示,设置页没有统一控制项。业务需要在“支付设置”中增加开关,让管理员能够统一控制支付成功结果中是否展示账户余额,且未配置设备继续保持当前“显示余额”的行为。

目标

方案选择

采用“弹框读取统一偏好配置”的方案:支付设置页只负责保存开关,两个弹框在绑定余额数据时读取配置并决定余额视图可见性。

该方案不修改各 Activity 的构造方法或调用参数,能够覆盖当前全部调用入口,也能让后续新增调用默认遵循同一规则。未采用由各 Activity 传入布尔值或在每个调用点手动隐藏的方案,因为这两种方式改动分散,容易遗漏订单核验、记账或后续新增页面。

界面设计

FragmentPayment 对应的支付设置页面中,紧接“支付结果弹框显示时长”增加一行设置项:

设置项文案使用字符串资源,开关尺寸复用资源值,不在布局和业务代码中新增可避免的硬编码。

配置设计

Constants 中新增职责明确的配置键和默认值:

FragmentPayment 进入页面时读取配置初始化开关;用户切换时通过 PreferenceUtils.putBoolean(...) 立即持久化。

弹框处理

基础版弹框

ShowPaymentSuccessPop 增加统一的余额绑定方法,供 setPaymentResultInfo(...)setOrderVerifyResultInfo(...) 调用。余额行显示条件为:

配置开启 && 余额字符串非空

条件不满足时将 show_payment_success_pop_show_balance_tv 设置为 View.GONE,满足时显示并设置余额文本。

营养增强版弹框

ShowPaymentSuccessWithNutritionPop.applyPaymentInfo(...) 使用相同判断规则控制 pay_success_show_balance_tv。其他支付信息、营养数据、动画和自动关闭逻辑保持不变。

数据流

  1. 管理员进入“支付设置”。
  2. FragmentPayment 读取余额显示配置,未配置时使用默认值 true
  3. 管理员切换开关,配置立即写入本地偏好。
  4. 下一次支付成功或订单核验成功弹框绑定支付结果时读取最新配置。
  5. 配置关闭时隐藏余额行;配置开启且余额非空时显示余额。

异常与兼容处理

测试与验收

构建检查

功能验收

交付边界