Skip to main content

每个用户、每种资产,一个查询拿全

在 DeCard 托管模式下,每个终端用户都持有一份由 DCS 托管、按币种隔离的独立钱包余额,您用一个查询即可拿到该用户每种资产的可用 / 冻结 / 总额。作为持牌发卡机构、自有 BIN,DCS 替您托管这份用户级账本,授权与清算都直接作用于该用户的独立余额——本接口就是这套模型的查询入口。 一个用户可同时持有多种资产,余额接口按币种逐项返回每种资产的可用 / 冻结 / 总额。 本页只聚焦余额查询。资金的进出与流转分布在同组其他页,互不重复:

余额模型:free / freeze / total

DCS 在托管下为每个用户、每种资产维护三个量:
一笔授权发生时:free 减少、freeze 增加、total 不变;清算(实际扣款)时从 freeze 中扣减,total 随之减少。授权 / 清算如何改写这三个量,见 授权清算;DCS 托管边界见 账户与资产模型
术语对齐:概念性资料中提到的「availableBalance / frozenBalance」即本接口的 free / freeze集成时一律以接口字段名 free / freeze / total 为准availableBalance / frozenBalance 仅作概念别名。

前置条件

  • 用户已通过 创建用户 / 用户状态管理 注册,您持有其 externalUserId
  • 通常需用户已完成 KYC 并已有资产入账(充值 / 划拨)后,余额才非零;新用户可能返回空数组或全 0。
  • 调用方为已开通 DeCard 托管方案的接入机构,按全站统一鉴权方式携带请求头(见 快速开始)。

接口契约

user-asset 模块还提供 credit / debit / transactions / transaction-detail / transfer-query 等接口,分布于本组的 交易查询概述账户与资产模型。本页仅展开余额查询接口。 GET /user-asset/v1/balance
仅此一个查询参数;无路径参数、无请求体。本接口不使用路径参数,也不存在 tenant 概念——余额始终以 externalUserId 为维度查询单个用户。

请求示例

示例中 usr_xxxxxxxx、密钥与签名全部为占位值。请勿在任何文档 / 日志 / 工单中粘贴真实用户 ID、API Key 或 secret。

响应

响应套用全站统一结构 { code, message, messageDetail, data }data数组,用户持有几种资产就有几项,每项描述一种币种的余额。
data[] 元素字段:
data数组而非单个对象。请按 asset(必要时结合 network)遍历取值,不要假设它是一个含 availableBalance / frozenBalance 字段的对象。全站统一响应结构 { code, message, messageDetail, data },成功时 code 字面量为 SYS_SUCCESS(两种模式一致)。

错误处理

  • 用户不存在 / externalUserId 无效code 非成功值,message / messageDetail 给出原因,data 不返回有效余额。请先确认该 externalUserId 已通过创建用户接口注册。
  • 缺少必填参数:未传 externalUserId 将被拒绝。
  • 鉴权失败:鉴权头(X-DAPI-API-KEY / X-DAPI-SIGN / X-DAPI-TIMESTAMP / X-DAPI-NONCE)缺失 / 签名错误 / X-DAPI-NONCE 重放,按统一鉴权错误返回(见 Quickstart)。
  • 空账户:用户存在但尚无任何资产时,data 可能为空数组 [] 或各项均为 0,这不是错误

关于「独立账户 / DeCard 托管」模型(为什么余额查得到)

DeCard 托管方案下,DCS 在内部按 externalUserId 维度托管每个用户的资金,并按币种隔离子账户——这正是本接口能返回每用户、每币种余额的前提。与之对照:
  • 合作伙伴自管:额度与授权决策由接入机构掌握,DCS 侧无用户级独立余额接口。
  • DeCard 托管(本套):DCS 托管用户独立余额,授权在系统内完成、直接作用于该用户的 free / freeze——本接口即该模型的余额查询入口。
这也解释了为什么「一笔授权能不能成」主要取决于用户 free 可用余额是否足额用户交易状态是否被禁,详见 授权

余额变动实时推送(WebSocket BALANCE_CHANGE)

当授权、清算、充值(credit)、扣款(debit)或内部划拨导致用户的 free / freeze 发生变动时,DCS 会通过 WebSocket 实时推送 BALANCE_CHANGE 事件,包含 freeDelta(可用变动)与 freezeDelta(冻结变动)以及变动后的 free / freeze 绝对值。接入机构无需轮询 /user-asset/v1/balance 来跟踪余额变化——订阅 WebSocket 通道后即可接收推送。详见 Webhook 与 WebSocket 实时通知

下一步