Files
2026-09-12 11:27:50 +08:00

3.9 KiB
Raw Permalink Blame History

Change: 商户池详情与商户凭证契约

Why

docs/产品迭代8月份/支付商户优化.md 记录了支付商户与商户池管理页的三个问题,加上运营补充的凭证契约与权限要求,本次处理三件事:

  • 商户池详情与支付商户详情的入口不一致:支付商户是点击名称进入独立详情页,商户池却是行操作里的详情抽屉,且详情没有展示接口已返回的全部字段(例如 time_period_started_at),成员只给出数量。
  • 点击“新增商户池”时页面抛出 Maximum recursive updates exceeded in component <PaymentMerchantPoolManagement>,新增和编辑商户池流程完全不可用。
  • 商户凭证的字段契约此前只存在于接口文档:必填键由 payment_methodprovider_type 组合决定,前端提交前没有字段枚举与类型校验,容易出现漏填必填键、ali_production / ali_pay_expire_minutes 以字符串提交、merchant_identity 与凭证字段不一致等会被后端拒绝的请求。

“更换凭证”表单的交互(手工逐行填写字段名与字段值、值不回显)按反馈保持原有行为,本次只在其上叠加字段契约校验。

What Changes

  • 新增商户池详情页,并改为点击列表中商户池名称进入,与支付商户详情保持一致;移除列表行操作中的“详情”入口。
  • 商户池详情页展示详情接口返回的业务字段:商户池名称、支付方式、启停状态、成员数量、成员商户、轮询策略、统计周期、金额/笔数/时间阈值、时间起点、路由世代、备注,以及接口返回时的创建时间和更新时间。
  • 成员商户按支付商户名称展示,不展示 member_ids 原始 ID名称无法解析时展示“未知商户”占位文案。
  • 合并商户池表单中 form.member_idsorderedMemberIds 的双向 watch 为单一数据源,消除递归更新错误,同时保持拖拽排序结果按顺序提交。
  • 将商户凭证字段枚举(各 payment_method + provider_type 组合的必填键与可选键)固化到前端类型模块,并在提交前校验字段枚举、必填键、值类型(布尔/整数/字符串)与 merchant_identity 一致性。
  • 凭证写入表单展示当前服务商组合的必填/可选字段提示,降低漏填必填键的概率。
  • 明确凭证访问控制:仅超级管理员(user_type=1)与平台用户(user_type=2)可读写商户凭证,凭证内容不进入日志、审计与支付快照。

Impact

  • Affected specs: payment-merchant-pool-management
  • Affected code:
    • src/views/settings/payment-merchant-pools/pool-detail.vue(新增)
    • src/views/settings/payment-merchant-pools/components/PoolManagement.vue
    • src/views/settings/payment-merchant-pools/components/MerchantManagement.vue
    • src/types/api/paymentMerchantPools.ts
    • src/router/routes/asyncRoutes.ts
    • src/router/routesAlias.ts
    • src/locales/langs/zh.jsonsrc/locales/langs/en.json
  • Dependencies:
    • 后端 GET /api/admin/payment-merchant-pools/{id} 返回 member_idsrouting_epochtime_period_started_at 等字段。
    • 后端按 payment_methodprovider_type 组合校验凭证必填键与值类型。
    • 成员商户名称由前端使用同 payment_method 的支付商户列表解析,不要求后端在商户池详情返回名称。
  • Compatibility:
    • 不改变“更换凭证”表单的交互方式与凭证值不回显约束。
    • 不影响支付商户列表与支付商户详情页的信息结构。
    • 不改变商户池创建、更新、启用、停用的请求结构。

Non-Goals

  • 不按服务商渲染带中文标签的固定凭证表单,仍保留“字段名 + 字段值”的通用编辑方式。
  • 不新增商户池详情、凭证校验之外的后端接口。
  • 不在商户池详情页展示 idmember_ids 等内部标识。
  • 不改动商户池轮询策略、成员排序规则和阈值换算规则。