Z Zise Developers
GET /v1/earn/products

理财产品(按 grant_scope + 授权表过滤)

Scope earn:read 商户自身

只返回对你开放的产品:你自己的(且开放范围不是「暂不开放」)、

按名单授权给你的、或上级对整条子树开放的。草稿 / 已归档 / 已下架

的不出现。

清单里出现 ≠ 可申购。这里只做可见性过滤,申购那一刻还会再判

一次(开放范围、开售时间、截止时间、总额度、单人额度、实名等级、

账户处置态)。所以「列表里有但申购被拒」是正常的,不是漂移。

⚠ 加产品 / 加期限档是后台加一行,我方不发版。别把产品清单硬编码

进你的界面。

apr_bps万分之一为单位的年化350 = 3.50%)。

活期的这个数是「此刻的挂牌值」,会变;定期的会在下单那一刻快照进订单。

响应

200不分页。status 是产品生命周期状态(active / paused / scheduled / ended …),认不出的原样保留。
{
  "data": [
    {
      "id": "ern_3a91f0c2-5d17-4e88-b2a0-91c7d4e6b501",
      "code": "FLEX-USDT-01",
      "kind": "flexible",
      "asset": "USDT",
      "term_days": 0,
      "apr_bps": 350,
      "ledger_scale": 6,
      "status": "active"
    },
    {
      "id": "ern_7d2b48ae-19c3-4f60-8c55-0ab3e9f21744",
      "code": "FIX-USDT-90",
      "kind": "fixed",
      "asset": "USDT",
      "term_days": 90,
      "apr_bps": 620,
      "ledger_scale": 6,
      "status": "active"
    }
  ],
  "next_cursor": null,
  "has_more": false
}
403insufficient_scope —— 这把 Key 没有 earn:read
调用样例
curl -X GET 'https://api.zise.com/v1/earn/products' \
  -H 'authorization: Bearer $TOKEN' \
  -H 'x-zise-merchant: $MERCHANT_ID'
const res = await fetch(
  "https://api.zise.com/v1/earn/products",
  {
    method: "GET",
    headers: {
      "authorization": "Bearer $TOKEN",
      "x-zise-merchant": "MERCHANT_ID"
    },
  },
);
// 金额一律按字符串读,不要 JSON.parse 成 number
const data = await res.json();
import requests

res = requests.get(
    "https://api.zise.com/v1/earn/products",
    headers={
        "authorization": "Bearer $TOKEN",
        "x-zise-merchant": "$MERCHANT_ID"
    },
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()