## 你的现象与原因归纳
- 你只看到 `payment_preorders`、`payment_notify_events` 有数据，`payment_refunds` 等为空：
  - 支付回调写交易记录的地方使用了“静默写入”，失败不会报错：`internal/api/pay/wechat_notify.go:92`（`_ = ...Create(tx)`），导致有回调事件但可能没有交易入库。
  - 退款创建同样采用“静默写入”：`internal/api/admin/pay_refund_admin.go:79`，即使插入失败，接口仍返回“success”，所以你在前端看到提示，但表里没数据。
  - 对账管理的数据依赖“导入账单”后才生成差异，未导入则 `payment_bills`、`payment_bill_diff` 为空，属正常（`internal/api/admin/pay_reconcile_admin.go:37-75,154-182`）。

## 验证与定位步骤
1. 查询订单详情聚合的退款：`GET admin/pay/orders/:order_no`（`internal/router/router.go:175`，实现 `internal/api/admin/pay_orders_admin.go:216-226`），确认 `refunds` 列表与 `refundable_amount` 是否合理。
2. 查询全局退款列表：`GET admin/pay/refunds?page=1&size=20`（`internal/router/router.go:170`，实现 `internal/api/admin/pay_refund_admin.go:154-181`）。
3. 验证 DB 表存在与权限：确认 `payment_refunds`、`payment_transactions` 表存在且可写；如果插入失败，当前代码不会抛错，需要看服务日志是否有“私钥/证书、权限、字段类型”等异常。
4. 核验微信支付配置与回调：`configs/fat_configs.toml:34-41` 的 `wechatpay` 配置、回调地址与路由匹配 `internal/router/router.go:252`。

## 修复方案（代码层）
- 将静默写库改为显式错误处理并日志：
  - 支付交易入库：`internal/api/pay/wechat_notify.go:92` 改为检查返回错误，失败则记录日志并返回错误，避免“有事件无交易”。
  - 退款入库：`internal/api/admin/pay_refund_admin.go:79` 改为显式处理插入错误；同时在后续积分流水与订单状态更新前确保退款记录已成功写入。
- 接口返回语义修正：退款接口在任何一步失败时返回错误，不再统一 `success`，确保前端提示与真实入库一致。

## 对账管理的正确使用
- 在“对账管理”导入每日账单（交易/退款）后再查看差异：前端入口 `web/admin/src/views/reconcile/diff/index.vue:45-76`；后端导入与差异查询分别为 `POST admin/pay/bills/import`、`GET admin/pay/bills/diff`。

## 交付与测试计划
- 修改错误处理后，执行一次完整流程：
  - 发起支付→收到回调→检查 `payment_transactions` 有记录。
  - 在订单详情发起退款→检查 `payment_refunds` 有记录，订单状态与积分流水一致。
  - 导入当天账单→检查 `payment_bill_diff` 能产生差异数据（如金额不一致、缺失条目）。

我将按以上步骤先进行只读验证（接口与日志路径），随后按修复方案更新入库错误处理并回归测试，确保你在“退款管理”与“对账管理”都能看到数据。