bindbox-game/.trae/documents/完成支付体系全量完善的实施计划.md
邹方成 6ee627139c
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 40s
feat: 新增支付测试小程序与微信支付集成
feat(pay): 添加支付API基础结构
feat(miniapp): 创建支付测试小程序页面与配置
feat(wechatpay): 配置微信支付参数与证书
fix(guild): 修复成员列表查询条件
docs: 更新代码规范文档与需求文档
style: 统一前后端枚举显示与注释格式
refactor(admin): 重构用户奖励发放接口参数处理
test(title): 添加称号效果参数验证测试
2025-11-17 00:42:08 +08:00

46 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 剩余完善项
- 积分恢复比例与幂等:部分/全额退款的积分恢复算法与重复保护
- 通知事件持久化与去重payment_notify_events 入库、processed 标记、重复回调忽略
- 退款列表与详情接口:基于 payment_refunds 的查询/分页/导出
- 对账入口与差异列表:账单导入、生成 payment_bill_diff、差异查询与导出
- 管理端详情字段完善:展示 transaction_id/refund_no/channel/支付方式、累计已退款与可退余额
- 前端金额展示统一为元(两位小数),保留分用于接口与导出
- 唯一索引与安全校验:核查并补齐关键唯一约束与条件更新
## 后端改造
1) 积分恢复
- 算法:恢复积分 = (订单积分抵扣分 × 退款分 ÷ 实付分) ÷ 100累计不超过订单抵扣积分
- 幂等:按订单维度累计已恢复积分对比目标;全额退款一次性恢复剩余积分
2) 通知事件
- 入库 payment_notify_events(notify_id,event_type,raw,processed=false);处理成功后置 processed=true重复 notify_id 直接 ACK
3) 退款查询
- GET /api/admin/pay/refunds分页筛选order_no/status/date/range
- GET /api/admin/pay/refunds/:refund_no详情refund_no/amount/status/success_time/reason/raw
4) 对账能力
- POST /api/admin/pay/bills/import上传/拉取账单入库 payment_bills
- GET /api/admin/pay/bills/diffs查询差异 payment_bill_diff缺失/金额不符/多余)
5) 订单详情聚合
- 交易:最近一笔 payment_transactionstransaction_id/success_time/amount
- 退款payment_refunds 汇总refund_no/amount/status/success_time/reason计算累计已退与可退余额
## 前端改造
- 金额格式化工具:统一元展示(两位小数),表格列与详情区全部使用
- 详情页新增字段transaction_id/refund_no/channel/支付方式;累计已退/可退余额(元)
- 退款记录表:元展示;状态中文映射
- 对账入口页面:账单导入按钮、差异列表表格、导出
## 幂等与安全
- 幂等键order_no/out_trade_no/notify_id/refund_no/transaction_id
- 唯一索引:核查 payment_* 与 orders.order_no接口层条件更新与金额校验
- 日志与告警:验签失败、金额不一致、退款异常、对账差异
## 测试与验收
- 单元:分↔积分换算、比例恢复、幂等重复、接口参数校验
- 集成:预下单→通知→主动退款→详情一致;对账导入与差异生成
- 前后端构建与联调通过;数据与展示口径一致
## 执行顺序
1. 后端:积分恢复与幂等、通知事件入库与去重
2. 后端:退款查询接口、对账入库与差异接口
3. 前端:金额格式化、详情字段与退款/对账页面
4. 测试与联调:全链路验证并修正细节