Z Zise Developers

变更日志

每条都标注了「是否需要你动手」。 标「需要」的,不做会在某一天出问题;

标「不需要」的是纯增量,你不改代码也不会坏。

我方对枚举值的承诺:新增状态值会提前在这里登记。所以你的 default

分支应当按「未知」处理并告警,而不是假装认识它 —— 见各端点页的状态说明。

这份变更日志从 2026-08-12 开始维护。在此之前的变更没有逐条记录。

业务拒绝不再以 500 返回 需要你动手

「余额不足」「报价过期」「该方向未启用」「地址校验和不对」这类合法的业务拒绝

此前走对外码目录的缺省分支,以 500 api_error 返回。现在逐条有明确的 4xx code

需要你动手:如果你为此写过「对 500 也重试」的绕行代码,请拆掉并改成按 code 分支。

新增对外码 amount_out_of_range(金额超出产品区间)——

它与 limit_exceeded 的处置相反:那条是额度用完了要等,这条改个数就能过。

同时删掉了目录里 21 个零发射点的死键,并加了守卫

(内部码没登记、或登记了却没人发,提交期就红)。

四个一调用就 500 的端点修好了 不需要动手

GET /v1/cards/{id} · GET /v1/cards/{id}/transactions ·

GET /v1/earn/products/{id} · POST /v1/cards/{id}/replacements

卡消费流水新增 direction 出参 —— amount 是绝对值,

只看金额的话一笔退款与一笔消费长得一模一样。

汇款详情不再回显内部状态,金额格式与列表统一 需要你动手

GET /v1/remittances/{id} 此前可能返回 pending_merchant_funds

(列表与下单口都折叠成 pending),且 source_amount 是未插小数点的

定点整数串 —— 同一笔单在两个端点上差 10^ledger_scale 倍。

需要你动手:如果你为「详情与列表金额对不上」写过换算,请拆掉。

现在两边都是十进制串并随行下发 ledger_scale

GET /v1/merchant/custody 随行下发 ledger_scale 不需要动手

对账用的两个数是定点整数串,此前不下发位数,而同一条线的

/v1/merchant/statements 一直下发 —— 商户在一个端点上能正确定标、

在另一个上只能猜。null 表示该资产已从目录下架(对账表会留历史行)。

89 个端点补齐参数、请求体、响应与示例 不需要动手

此前 spec 里只有「方法 + 路径 + 一句话 + scope」,没有任何字段声明。

现在每个端点一页,含参数表、请求体字段、响应示例、三种语言的调用样例。

接口行为没有变化,变的只是文档。

错误码目录公开,共 42 个对外码 需要你动手

新增 /errors 页,逐条写明含义与你该怎么处置(该重试的、

不能重试的、需要人介入的)。

需要你动手:如果你的实现里有「按 HTTP 状态码分支」的重试逻辑,

请改成code 分支。几个反直觉的:service_unavailable

limit_exceededasset_not_allowedstate_invalid 都是 400 不是 5xx

事件目录公开,共 20 条 需要你动手

新增 /events 页,含事件体示例与投递语义。

需要你动手:目录里逐条标注了 data.id 的真实形态与

status_version 是否可用 —— 有 9 条事件的 status_version 恒为 0

如果你写了「version 不大于当前值就跳过」的合并器,这 9 条只有第一条会生效。

在我方修好之前,请对这几条改用「按到达时间 + 回查确认」。

分页信封统一为 { data, next_cursor, has_more } 不需要动手

静态清单端点(如 GET /v1/transfers/recipient-types)也返回同一个信封,

你的通用翻页器不需要为它们开特例。

⚠ 一处例外尚未收口:GET /v1/balances 仍返回 { balances: [...] }

端点页上已标注,修好后会在这里登记。

业务端点开始限流 需要你动手

按商户 × 桶计:入金上报 60/分钟、建会员 300/分钟、其余写 120/分钟、

读 1200/分钟。超出返回 429 + Retry-After

需要你动手:把 429 当正常路径处理并按 Retry-After 退避。

收到 429 不代表你被封了。详见 限流

Webhook 投递改为按端点扇出 不需要动手

此前「一个 2xx 就算全成功」:配了三个端点、一个通两个 500 时,

那两个永远不会重试而记录显示已送达。现在一行 = 一个(事件, 端点),

各自退避;新增 no_subscriber 一档(零行看起来像「还没有事件」而不是「坏了」)。

沙盒事件与生产隔离 不需要动手

投递行带环境,订阅端点查询带环境谓词。沙盒端点不再收到生产事件。

⚠ 上游故障注入器目前是空操作(注入之后仍打真实上游),

详见 沙盒。修好后会在这里登记。