POST
/v1/merchant/deposit-addresses
申请预付充值地址(按 币×网络 复用)
Scope
merchant:read
商户自身
需 x-idempotency-key
已经有地址的 (商户, 网络) 直接回既有那一个,不会给你第二个。
network 要的是短代码(TRC20 / ERC20 / BEP20 …),
不是 GET 那一侧回显的展示名。认不出的 币×网络 组合一律拒,
不兜底挑一条 —— 自动挑等于把你的预付打到一条你没选的链上。
⚠ service_unavailable 不是失败,是「还没好」:上游正在建地址,
隔几秒按 retry_after 重来即可(它是 400 不是 503,别按 5xx 分支处理)。
把它当失败去换一条链重试,只会再建一个你不需要的地址。
链上到账后自动入账(金额来自托管方确认,我方没有一处手输数字),
到账结果看 GET /v1/merchant/balances。
前置条件
- 该「币 × 网络」在我方渠道表里存在且已启用
请求头
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
x-idempotency-key |
string | 必填 | UUID v4 |
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
asset |
string | 必填 | 币种代码,大小写不敏感(服务端转大写) |
network |
string | 必填 | 网络短代码,大小写敏感、精确匹配(TRC20 而不是
TRON (TRC20),也不是 trc20)。 |
响应
201已分配(已存在时回既有那一个,同样是 201)
{
"asset": "USDT",
"network": "TRC20",
"address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"memo": ""
}400
invalid_request body 非 JSON / 缺 asset 或 network ·
asset_not_allowed 这个「币 × 网络」不存在或未启用 ·
service_unavailable 上游还在建地址,按 retry_after(秒)重试409
idempotency_key_reused · idempotency_in_progress
调用样例
curl -X POST 'https://api.zise.com/v1/merchant/deposit-addresses' \
-H 'authorization: Bearer $TOKEN' \
-H 'x-zise-merchant: $MERCHANT_ID' \
-H 'x-idempotency-key: $(uuidgen)' \
-H 'content-type: application/json' \
-d '{
"asset": "USDT",
"network": "TRC20"
}'
const res = await fetch(
"https://api.zise.com/v1/merchant/deposit-addresses",
{
method: "POST",
headers: {
"authorization": "Bearer $TOKEN",
"x-zise-merchant": "MERCHANT_ID",
"x-idempotency-key": "crypto.randomUUID()",
"content-type": "application/json"
},
body: JSON.stringify({
"asset": "USDT",
"network": "TRC20"
}),
},
);
// 金额一律按字符串读,不要 JSON.parse 成 number
const data = await res.json();
import requests
res = requests.post(
"https://api.zise.com/v1/merchant/deposit-addresses",
headers={
"authorization": "Bearer $TOKEN",
"x-zise-merchant": "$MERCHANT_ID",
"x-idempotency-key": "$(uuidgen)",
"content-type": "application/json"
},
json={
"asset": "USDT",
"network": "TRC20"
},
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()