钱包与套餐包
查询账号钱包余额与当前套餐状态、管理限时额度包(删除已耗尽的包、切换优先扣费)。
钱包与套餐包接口均属于管理接口:鉴权方式为登录会话(或用户 access token)+ Jimu-Api-User 请求头,
不接受 sk- API 令牌本身,详见 鉴权与令牌。
错误响应为管理接口形态(success/message),见 错误处理与请求追踪。
积木的额度分两个池:永久额度(quota,不过期)与限时额度包(quota_pack,有各自的过期时间)。
扣费时优先消耗被标记为"优先使用"的额度包,其余按过期时间从早到晚消耗额度包,额度包耗尽后再消耗永久额度。
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/user/self/wallet | 查询钱包余额、套餐状态与全部额度包 |
DELETE | /api/user/self/quota-pack/{id} | 删除一个已耗尽的额度包 |
POST | /api/user/self/quota-pack/{id}/preferred | 切换额度包的"优先使用"标记 |
查询钱包
/api/user/self/wallet无需参数,返回当前用户的合并余额、套餐信息与全部额度包列表(含已耗尽的)。
{
"success": true,
"message": "",
"data": {
"quota": 1520000,
"used_quota": 340000,
"request_count": 128,
"permanent_quota": 1000000,
"current_package_card_id": 3,
"current_package_code": "pro",
"current_package_name": "Pro 套餐",
"has_paid_package": true,
"package_is_expired": false,
"quota_packs": [
{
"id": 12,
"user_id": 1001,
"quota": 600000,
"remain_quota": 520000,
"source": "redemption",
"source_id": 88,
"expired_time": 1767225600,
"preferred": false,
"created_time": 1756400000
}
],
"quota_pack_count": 1,
"quota_pack_total": 520000,
"quota_pack_nearest_expiry": 1767225600,
"package_info": {
"package_code": "pro",
"package_name": "Pro 套餐",
"package_quota": 100000,
"package_card_id": 3,
"package_expire_time": 1759000000,
"package_daily_quota": 100000,
"package_days_remaining": 15
}
}
}
quotaint合并余额(永久额度 + 全部额度包剩余,单位为积分)——多数场景应使用这个值判断"还能用多少"
permanent_quotaint永久额度池余额(不含额度包)
used_quotaint累计已用额度
request_countint累计请求次数
current_package_codestring当前套餐标识;no_package 表示未订阅任何套餐
current_package_namestring当前套餐展示名称;无套餐时为「无套餐」
has_paid_packagebool是否持有未过期的付费套餐
package_is_expiredbool当前套餐是否已过期(或从未订阅)
quota_packsarray全部额度包(含已耗尽的),字段见下方「额度包对象」
quota_pack_countint额度包数量(含已耗尽)
quota_pack_totalint全部未耗尽额度包的剩余额度合计
quota_pack_nearest_expiryint未耗尽额度包中最早的过期时间(Unix 秒),无未耗尽额度包时为 0
package_infoobject | undefined仅当套餐未过期时出现;套餐详情字段见下表
额度包对象
idint额度包 ID
quotaint该额度包的初始额度
remain_quotaint剩余额度;为 0 时视为已耗尽,可被删除
sourcestring来源:redemption 兑换码 / topup 充值 / admin 管理员发放 / reward 奖励
expired_timeint过期时间(Unix 秒)
preferredbool是否标记为优先扣费;同一用户至多一个额度包为 true
created_timeint创建时间(Unix 秒)
package_info 子对象
仅当当前套餐未过期时出现在钱包响应中:
package_codestring套餐标识
package_namestring套餐展示名称
package_quotaint套餐当前存量额度(users.package_quota)
package_card_idint套餐模板 ID
package_expire_timeint套餐过期时间(Unix 秒)
package_daily_quotaint当天套餐额度总量(含刷新叠加)
package_days_remainingint距过期的剩余天数(向上取整)
删除额度包
/api/user/self/quota-pack/{id}只能删除剩余额度为 0(已耗尽)的额度包,仍有余额的额度包会返回失败:
{ "success": false, "message": "额度包不存在或仍有剩余额度" }
成功时返回 {"success": true, "message": "额度包已删除"}。
切换额度包优先扣费
/api/user/self/quota-pack/{id}/preferred将指定额度包标记为"优先扣费"。同一用户至多一个额度包可被标记为优先—— 再次对同一包调用会取消该标记(切换语义,非幂等置位); 对另一个包调用会自动清除原有包的标记,实现互斥。
{"success": false, "message": "额度包不存在或已耗尽"} 或 "额度包已过期"。{ "success": true, "data": true }
data 为切换后的新状态(true = 已设为优先,false = 已取消优先)。