58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
# 支付与客户钱包当前行为
|
||
|
||
## Purpose
|
||
|
||
描述个人客户订单、充值、钱包及支付回调共同资金不变量的当前可观察行为。
|
||
|
||
## Requirements
|
||
|
||
### Requirement: 金额单位
|
||
|
||
系统 SHALL 以整数分保存和计算钱包、订单、充值、退款与佣金金额。
|
||
|
||
#### Scenario: 金额单位
|
||
|
||
- **GIVEN** 请求包含合法金额
|
||
- **WHEN** 执行资金操作
|
||
- **THEN** 响应与持久化金额按分精确一致且不使用浮点计算
|
||
|
||
### Requirement: 支付回调幂等
|
||
|
||
系统 SHALL 验证渠道回调并只把匹配金额和待支付业务首次推进到已支付。
|
||
|
||
#### Scenario: 支付回调幂等
|
||
|
||
- **GIVEN** 同一合法支付回调被重复发送
|
||
- **WHEN** 重复调用回调入口
|
||
- **THEN** 业务资金与状态只生效一次,重复回调得到渠道可接受响应
|
||
|
||
### Requirement: 钱包并发
|
||
|
||
系统 SHALL 防止同一钱包并发扣款造成余额低于允许值或重复记账。
|
||
|
||
#### Scenario: 钱包并发
|
||
|
||
- **GIVEN** 同一钱包收到并发资金请求
|
||
- **WHEN** 同时执行扣款
|
||
- **THEN** 最多允许满足余额与状态条件的请求成功,每笔成功只产生一条业务事实
|
||
|
||
## 可达操作索引
|
||
|
||
本节只用于入口导航,不是行为 Requirement;业务义务以上述 Requirements 为准。
|
||
|
||
### 支付回调
|
||
|
||
`POST /api/callback/alipay`(支付宝回调);`POST /api/callback/fuiou-pay`(富友支付回调);`POST /api/callback/wechat-pay`(微信支付回调)。
|
||
|
||
### 个人客户 - 订单
|
||
|
||
`GET /api/c/v1/orders`(订单列表);`GET /api/c/v1/orders/{id}`(订单详情);`POST /api/c/v1/orders/{id}/pay`(订单支付);`POST /api/c/v1/orders/create`(创建订单)。
|
||
|
||
### 个人客户 - 充值订单
|
||
|
||
`GET /api/c/v1/recharge-orders`(充值订单列表);`GET /api/c/v1/recharge-orders/{id}`(充值订单详情)。
|
||
|
||
### 个人客户 - 钱包
|
||
|
||
`GET /api/c/v1/wallet/detail`(钱包详情);`POST /api/c/v1/wallet/recharge`(创建充值订单);`GET /api/c/v1/wallet/recharge-check`(充值前校验);`GET /api/c/v1/wallet/recharges`(充值记录列表);`GET /api/c/v1/wallet/transactions`(钱包流水列表)。
|