Files
junhong_cmp_fiber/openspec/specs/order-payment-wallet/spec.md

58 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 支付与客户钱包当前行为
## 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`(钱包流水列表)。