6.3 KiB
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_amount与max_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_method 为 offline 时提交 offline_payment_method_id、external_transaction_no 与可选的 other_voucher_key,并与既有的 payment_voucher_key 分开提交。
Scenario: 提交线下预存款申请
- GIVEN 用户以平台账号或超级管理员身份打开线下代充弹窗
- WHEN 用户提交申请
- THEN 请求体 MUST 包含
amount、payment_method为offline与shop_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_noMUST 只作为线下人工申报的交易流水号 - 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_method为offline的充值单 - THEN 列表 MUST 展示
external_transaction_no - AND 列表 MUST 使用
offline_payment_method_name展示收款方式
Scenario: 详情展示收款方式快照
- WHEN 详情返回历史线下充值单
- THEN 前端 MUST 使用
offline_payment_method_code与offline_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 只使用
page、page_size、shop_id、status、recharge_source、start_date与end_date - AND 前端 MUST NOT 新增交易流水号筛选条件
Requirement: 付款凭证上传类型声明
代理充值付款凭证与其他凭证在获取上传地址时 SHALL 显式声明 content_type 为 image/jpeg。
Scenario: 上传地址声明图片类型
- WHEN 前端为代理充值线下凭证请求上传地址
- THEN 请求 MUST 携带
content_type为image/jpeg - AND 上传请求 MUST 使用相同的内容类型