GET
/v1/balances
会员逐资产余额(八桶)
Scope
balances:read
代会员调用 · 必带 x-on-behalf-of
一个资产一行,八个桶各自独立。它们不是「总额的几种切法」,
而是八个互不重叠的余额,会员的该资产总量 = 八个之和。
available可用。唯一能直接花的那一桶。所有下单类端点扣的都是它。pending在途。已检测到但尚未确认到账的入金。
在 merchant_hosted 下它恒为 0 —— 到账判定发生在商户那一侧,
商户调 POST /v1/deposits 时已经是确认过的钱。
frozen冻结。运营/风控按会员按资产冻住的部分,
解冻只能由我方后台操作,商户没有解冻入口。
isolated隔离。争议、司法协助、反洗钱调查期间单独隔出来的部分。
与 frozen 分开是因为处置流程不同,不要合并展示。
locked业务锁定。汇款等异步且可能失败的订单在下单那一刻
把钱从 available 挪进来的桶,订单终局时要么结算掉要么退回 available。
card卡内资金。已经充进发卡上游的钱,物理上不在我方,
只能由发卡线的接口动它 —— 不要把它算进「用户还能花多少」。
earn理财。已申购进活期/定期的本金。withdrawing提现在途。POST /v1/withdrawals从 available
扣进来的那一桶,只能走 confirm(清零)或 fail(退回 available)。
运营碰不到它,商户也没有第三条路径。
⚠ 返回的是「这个会员已经有账户行的资产」,不是资产目录。
一个还没收到过任何一笔钱的会员返回的是空数组,而不是一串 0。
要展示全部可选资产请另取 GET /v1/assets,两者做外连接。
⚠ 响应信封是 { balances: [...] },不是本站其余列表端点那个
{ data, next_cursor, has_more }。它不分页,也不会分页。
前置条件
- 该会员属于这把 Key 的商户(否则一律 member_not_found,与「不存在」同一响应)
请求头
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
x-on-behalf-of |
string | 必填 | 查谁的余额。两种标识都收 —— 商户自己的 external_member_id,
或我方在会员出参里发的 mem_<uuid>。 |
响应
200OK
{
"balances": [
{
"asset": "USDT",
"available": "1250.000000",
"pending": "0.000000",
"frozen": "0.000000",
"isolated": "0.000000",
"locked": "300.000000",
"card": "0.000000",
"earn": "5000.000000",
"withdrawing": "0.000000",
"ledger_scale": 6,
"display_scale": 2
},
{
"asset": "USD",
"available": "48.750000",
"pending": "0.000000",
"frozen": "0.000000",
"isolated": "0.000000",
"locked": "0.000000",
"card": "120.000000",
"earn": "0.000000",
"withdrawing": "0.000000",
"ledger_scale": 6,
"display_scale": 2
}
]
}400
member_context_required 没带 x-on-behalf-of404
member_not_found 会员不存在 / 属于别的商户 / 已停用 ——
三种同一响应,不要据它判断会员是否存在
调用样例
curl -X GET 'https://api.zise.com/v1/balances' \
-H 'authorization: Bearer $TOKEN' \
-H 'x-zise-merchant: $MERCHANT_ID' \
-H 'x-on-behalf-of: $MEMBER_ID'
const res = await fetch(
"https://api.zise.com/v1/balances",
{
method: "GET",
headers: {
"authorization": "Bearer $TOKEN",
"x-zise-merchant": "MERCHANT_ID",
"x-on-behalf-of": "MEMBER_ID"
},
},
);
// 金额一律按字符串读,不要 JSON.parse 成 number
const data = await res.json();
import requests
res = requests.get(
"https://api.zise.com/v1/balances",
headers={
"authorization": "Bearer $TOKEN",
"x-zise-merchant": "$MERCHANT_ID",
"x-on-behalf-of": "$MEMBER_ID"
},
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()