3.6 KiB
3.6 KiB
订单支付确认开发日志
操作时间:2026-09-11 20:55:00
操作类型:新增/扩展
影响模块:用户端订单、钱包支付、气瓶订单、视觉验收
操作前状态
订单动作使用底部菜单直接选择渠道,没有图19独立支付确认页。气瓶订单支付只处理外部渠道,商城余额支付没有写入统一支付单,退款链路无法找到该支付事实。
具体操作
- 新增
/payment/:business/:identity,同时读取本人订单详情和钱包,展示应付金额、商品快照、订单号、支付方式、安全验证和金额明细。 - 余额支付使用六位脱敏圆点输入,扣款前再次确认订单号、渠道和金额;未知结果保留原幂等请求号。
- 气瓶和商城余额支付均在数据库事务内锁定订单与钱包,校验支付密码,写入订单状态、支付单和钱包记录。
- 订单不在可支付状态时禁用底部按钮。优惠券无服务端接口,保留位置并显示“暂未开放”及原因弹层。
- 支付页复用服务端充值渠道就绪配置:当前Web环境未配置商户证书时,微信和支付宝直接显示“暂未开放”并禁用,不再允许用户提交后才得到配置错误。
- 气瓶订单使用真实钢瓶位图;服务端订单快照有图片时优先显示快照,普通商城商品缺图时保持缺图图标,不伪造商品照片。
- 按最新图19重校卡片高度、支付方式图标/单选位置、密码圆点、订单明细和固定底部按钮。
代码变更
apps/user_app/lib/ui/features/orders/payment_confirmation_page.dart:支付页与交互。apps/user_app/lib/ui/core/payment_pin_field.dart:共用六位支付密码组件。apps/user_app/lib/app/router.dart、apps/user_app/lib/ui/features/orders/order_action_handler.dart:支付路由与订单入口。apps/user_app/lib/data/repositories/client_repository.dart:支付密码、商城/气瓶参数校验与余额结果校验。backend/api/internal/logic/client/user/gasorder.go、shop.go:原子余额支付、幂等重试和支付事实。apps/user_app/test/ui/payment_confirmation_page_test.dart、backend/api/internal/logic/client/user/wallet_order_payment_test.go:页面和重试测试。apps/user_app/test/support/a1_fixture.dart:视觉夹具提供明确的渠道就绪状态,不访问真实支付渠道。apps/user_app/tool/a1_visual_test.dart、scripts/compare-user-app-a1.ps1:图19多尺寸截图和并排对照。
验证结果
- Flutter analyze通过,Flutter全量171项通过。
- 图19在320/360/390/430宽、1.0/1.3文字缩放共8项通过;当前视觉集合共184项通过。
- Go全量
go test ./...、go vet ./...和API构建通过。 - Flutter Web Release构建通过,API使用仓库现有远程PostgreSQL/Redis配置重启成功。
- 内置浏览器展示远程真实订单金额、钱包余额、全部分组和优惠券未开放弹层。
- 2026-09-11 23:55再次在内置浏览器打开真实已取消订单
EC1788842040900189900:金额与余额来自远程数据,微信/支付宝显示“暂未开放”,优惠券弹层可见,订单不可支付按钮禁用;未产生订单或资金写入。
风险评估
- 当前测试账号无待付款订单,浏览器展示使用真实已取消订单,没有执行远程扣款。待付款成功路径由组件测试和服务端事务测试覆盖。
- 微信、支付宝仍依赖环境的真实商户配置与回调;页面按服务端配置状态判定是否可选,尚未做真实渠道回调验收。
- 优惠券缺少接口和后台配置,当前只显示首期缺失状态,不计为完成。