## 目标
- 连接已生成的 payment_* 表与 Model/DAO，完成真实微信支付体系：预下单→通知→退款→对账；统一金额/积分；管理端与前端展示一致。

## 后端改造
- 预下单（JSAPI）：
  - 在 `internal/api/user/pay_wechat_app.go` 调用 jsapi 预下单成功后，写入 `payment_preorders(order_id, order_no, out_trade_no=order_no, prepay_id, amount_total, payer_openid, notify_url, status, expired_at)` 并回填 `orders.pay_preorder_id`。
- 通知验签与解密：
  - 在 `internal/api/pay/wechat_notify.go` 验签解密后，写 `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`。
- 后台主动退款：
  - 在 `internal/api/admin/pay_refund_admin.go` 调用微信退款后，写入 `payment_refunds(order_id, order_no, refund_no, amount_refund, status, success_time, raw, reason)`；
  - 按比例恢复积分：`恢复积分 = (订单积分抵扣分 × 退款分 ÷ 实付分) ÷ 100`，累计不超过订单抵扣积分；全额退款一次性恢复剩余；全额时置 `orders.status=4`；部分退款保留 `2已支付`。
- 对账：
  - 新增服务在每日任务中拉取 `tradebill/refundbill` 入库 `payment_bills`；对比 `payment_transactions/payment_refunds` 生成 `payment_bill_diff`；导出差异。

## 管理端接口
- 订单详情聚合：从 `payment_transactions/payment_refunds` 汇总展示 `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`。

## 前端改造
- 金额统一以“元”格式化展示（两位小数），接口仍用“分”；
- 订单详情增加真实字段（交易号、退款号、渠道/支付方式），展示累计已退与可退余额（元）；退款记录按元显示。

## 幂等与安全
- 使用唯一索引与幂等键：`order_no/notify_id/refund_no/transaction_id/out_trade_no`；
- 条件更新控制并发；异常与差异告警。

## 验收与测试
- 单元：分↔积分换算、比例恢复、幂等重复；
- 集成：预下单→通知→主动退款→详情一致；
- 对账：拉取账单并生成差异；前后端构建与联调通过。