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): 添加称号效果参数验证测试
2.3 KiB
2.3 KiB
实施范围
- 对接已生成的 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;唯一索引已在表层 - 条件更新控制并发;日志与告警覆盖验签失败、金额不一致、退款异常、对账差异
验收与测试
- 单元:分↔积分换算、部分/全额退款恢复、幂等重复
- 集成:真实预下单→通知→主动退款→详情对齐;对账拉取与差异
- 构建与联调通过,数据持久化与展示一致