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): 添加称号效果参数验证测试
39 lines
2.3 KiB
Markdown
39 lines
2.3 KiB
Markdown
## 实施范围
|
||
- 对接已生成的 payment_* 表与 Model/DAO,落地真实支付服务逻辑与管理端展示
|
||
|
||
## 后端服务对接
|
||
- 预下单(JSAPI)
|
||
- 写入 `payment_preorders`:`order_id/order_no/out_trade_no=order_no/prepay_id/amount_total/payer_openid/notify_url/status=created/expired_at`
|
||
- 回填 `orders.pay_preorder_id`;返回四行签名参数给小程序
|
||
- 支付通知(验签与解密)
|
||
- 入库 `payment_notify_events`(`notify_id/event_type/raw/processed=false`,幂等去重)
|
||
- 入库 `payment_transactions`:`order_id/order_no/transaction_id/amount_total/success_time/raw`
|
||
- 条件更新 `orders.status:1→2`,写 `paid_at`
|
||
- 后台主动退款(全额/部分)
|
||
- 生成 `refund_no` 并调用微信退款 API,入库 `payment_refunds`:`order_id/order_no/refund_no/amount_refund/status/success_time/raw/reason`
|
||
- 积分恢复(统一换算与幂等):
|
||
- 部分退款:`恢复积分 = (订单积分抵扣分 × 退款分 ÷ 实付分) ÷ 100`,累计不超过订单抵扣积分;幂等以“累计已恢复”校验
|
||
- 全额退款:一次性恢复剩余积分,置 `orders.status=4`
|
||
- 对账基础能力
|
||
- 拉取交易/退款账单入库 `payment_bills`;比对生成 `payment_bill_diff`;导出差异
|
||
|
||
## 管理端接口
|
||
- 订单详情聚合字段:
|
||
- 交易:`transaction_id/success_time/amount_total`
|
||
- 退款:累计已退与明细 `refund_no/amount_refund/status/success_time/reason`
|
||
- 可退余额(分):`actual_amount - 累计退款`
|
||
- 退款列表与详情:`GET /api/admin/pay/refunds`、`GET /api/admin/pay/refunds/:refund_no`
|
||
- 对账入口:`POST /api/admin/pay/bills/import`、`GET /api/admin/pay/bills/diffs`
|
||
|
||
## 前端展示改造
|
||
- 金额统一元格式化显示(两位小数),接口仍用分;
|
||
- 详情页增加展示 `transaction_id/refund_no/channel/支付方式`、累计已退与可退余额(元);退款记录按元显示
|
||
|
||
## 幂等与安全
|
||
- 幂等键:`order_no/notify_id/refund_no`;唯一索引已在表层
|
||
- 条件更新控制并发;日志与告警覆盖验签失败、金额不一致、退款异常、对账差异
|
||
|
||
## 验收与测试
|
||
- 单元:分↔积分换算、部分/全额退款恢复、幂等重复
|
||
- 集成:真实预下单→通知→主动退款→详情对齐;对账拉取与差异
|
||
- 构建与联调通过,数据持久化与展示一致 |