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

6.3 KiB

ADDED Requirements

Requirement: 代理在线自充可用收款方式

前端 SHALL 通过 GET /api/admin/agent-self-recharge-payment-methods 获取代理在线自充的可用支付方式与金额范围,并在该接口返回空 methods 时禁止创建在线充值单。

Scenario: 读取可用支付方式

  • WHEN 平台账号或代理账号进入代理充值页面并打开在线充值弹窗
  • THEN 前端 MUST 调用 GET /api/admin/agent-self-recharge-payment-methods
  • AND 前端 MUST 使用响应 methods 渲染可选的微信与支付宝方式
  • AND 前端 MUST 使用响应 min_amountmax_amount 作为金额上下限
  • AND 前端 MUST NOT 再调用 GET /api/admin/agent-recharges/payment-methods

Scenario: 可用方式为空

  • GIVEN GET /api/admin/agent-self-recharge-payment-methods 返回空 methods
  • WHEN 用户打开在线充值弹窗
  • THEN 前端 MUST 提示「当前暂无可用的在线支付方式」
  • AND 前端 MUST 禁用在线充值提交
  • AND 前端 MUST NOT 解释为空的原因是被允许范围限制还是无可用商户
  • AND 前端 MUST NOT 因空列表报错或阻断页面其余功能

Scenario: 超级管理员不通过该接口读取允许范围

  • WHEN 当前登录账号为超级管理员
  • THEN 前端 MUST NOT 为读取允许范围调用 GET /api/admin/agent-self-recharge-payment-methods
  • AND 前端 MUST 统一处理该接口对超级管理员返回的 403

Scenario: 允许范围变更不影响存量待支付单

  • WHEN 允许范围配置发生变更
  • THEN 前端 MUST NOT 刷新或改写已创建待支付充值单的支付方式与商户信息

Requirement: 线下预存款申请字段

线下预存款创建请求 SHALL 在 payment_methodoffline 时提交 offline_payment_method_idexternal_transaction_no 与可选的 other_voucher_key,并与既有的 payment_voucher_key 分开提交。

Scenario: 提交线下预存款申请

  • GIVEN 用户以平台账号或超级管理员身份打开线下代充弹窗
  • WHEN 用户提交申请
  • THEN 请求体 MUST 包含 amountpayment_methodofflineshop_id
  • AND MUST 包含必填 offline_payment_method_id,取值来自 GET /api/admin/employee-collection-payment-methods 的启用项
  • AND MUST 包含必填 external_transaction_no
  • AND MUST 包含至少 1 个 payment_voucher_key
  • AND MAY 包含最多 5 个 other_voucher_key

Scenario: 支付凭证与其他凭证分开提交

  • WHEN 用户上传支付凭证与其他凭证
  • THEN 支付凭证 MUST 通过 payment_voucher_key 提交
  • AND 其他凭证 MUST 通过 other_voucher_key 提交
  • AND 前端 MUST NOT 将两类凭证合并到同一字段

Scenario: 交易流水号与在线交易号互不覆盖

  • WHEN 前端提交或展示线下预存款申请
  • THEN external_transaction_no MUST 只作为线下人工申报的交易流水号
  • AND 前端 MUST NOT 用 payment_transaction_id 覆盖或替代 external_transaction_no
  • AND 前端 MUST NOT 对 external_transaction_no 做重复性校验

Requirement: 付款凭证交易流水号识别预填

前端 SHALL 通过 POST /api/admin/agent-recharges/payment-voucher-ocr 以已上传的付款凭证对象键换取交易流水号预填值,识别失败 MUST NOT 阻断人工填写与提交。

Scenario: 识别成功预填交易流水号

  • GIVEN 线下代充弹窗已上传至少 1 个付款凭证
  • WHEN 用户点击识别凭证
  • THEN 前端 MUST 调用 POST /api/admin/agent-recharges/payment-voucher-ocr,请求体为 { payment_voucher_key }
  • AND 前端 MUST 将响应 external_transaction_no 写入交易流水号输入框
  • AND 交易流水号输入框 MUST 保持可编辑并提示用户对照凭证核对

Scenario: 识别失败不阻断提交

  • GIVEN OCR 返回失败,包括凭证不是图片、对象不存在或识别服务异常
  • WHEN 用户点击识别凭证
  • THEN 前端 MUST 展示失败提示
  • AND 前端 MUST NOT 阻断用户手动填写交易流水号并提交
  • AND 前端 MUST NOT 清空用户已填写内容

Scenario: 识别请求展示加载态并使用足够超时

  • WHEN 前端发起 OCR 请求
  • THEN 前端 MUST 在请求期间展示 loading 并防止重复提交
  • AND 请求超时 MUST NOT 低于 30 秒

Scenario: 只预填交易流水号

  • WHEN OCR 识别成功
  • THEN 前端 MUST 只预填 external_transaction_no
  • AND 前端 MUST NOT 预填金额、付款人、付款时间或备注

Requirement: 代理充值交易流水号与收款方式展示

代理充值列表与详情 SHALL 展示线下预存款的 external_transaction_no 与收款方式快照,在线充值只展示 payment_transaction_id

Scenario: 列表展示线下补充字段

  • WHEN 列表返回 payment_methodoffline 的充值单
  • THEN 列表 MUST 展示 external_transaction_no
  • AND 列表 MUST 使用 offline_payment_method_name 展示收款方式

Scenario: 详情展示收款方式快照

  • WHEN 详情返回历史线下充值单
  • THEN 前端 MUST 使用 offline_payment_method_codeoffline_payment_method_name 展示收款方式
  • AND 前端 MUST NOT 用 offline_payment_method_id 反查字典当前值
  • AND 前端 MUST 展示 other_voucher_key 对应的其他凭证

Scenario: 两类交易号独立展示

  • WHEN 详情展示在线充值单
  • THEN 前端 MUST 只展示 payment_transaction_id
  • AND 前端 MUST NOT 把 external_transaction_no 当作在线渠道交易号展示

Scenario: 列表不新增交易流水号筛选

  • WHEN 前端实现代理充值列表筛选
  • THEN 前端 MUST 只使用 pagepage_sizeshop_idstatusrecharge_sourcestart_dateend_date
  • AND 前端 MUST NOT 新增交易流水号筛选条件

Requirement: 付款凭证上传类型声明

代理充值付款凭证与其他凭证在获取上传地址时 SHALL 显式声明 content_typeimage/jpeg

Scenario: 上传地址声明图片类型

  • WHEN 前端为代理充值线下凭证请求上传地址
  • THEN 请求 MUST 携带 content_typeimage/jpeg
  • AND 上传请求 MUST 使用相同的内容类型