Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 40s
feat(pay): 添加支付API基础结构 feat(miniapp): 创建支付测试小程序页面与配置 feat(wechatpay): 配置微信支付参数与证书 fix(guild): 修复成员列表查询条件 docs: 更新代码规范文档与需求文档 style: 统一前后端枚举显示与注释格式 refactor(admin): 重构用户奖励发放接口参数处理 test(title): 添加称号效果参数验证测试
46 lines
2.7 KiB
Markdown
46 lines
2.7 KiB
Markdown
## 剩余完善项
|
||
- 积分恢复比例与幂等:部分/全额退款的积分恢复算法与重复保护
|
||
- 通知事件持久化与去重: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_transactions(transaction_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. 测试与联调:全链路验证并修正细节 |