Z Zise Developers
全球账户 › 指南

哪些状态是终局、哪些还会动 —— 认不出的状态一律按未知处理并告警。

订单生命周期


created ─► processing ─┬─► completed   (终局)
                       ├─► failed      (终局,钱已退回)
                       ├─► refunded    (终局,钱已退回)
                       └─► action_required ─► 回到 processing

终局与非终局

状态终局钱在哪
completed已付给收款人
failed已退回会员余额
refunded已退回会员余额
processing锁定中
action_required锁定中,等人

三条必须守住的

一、completed 不等于「上游说完成了」

我方在收到上游的完成信号之后还要做一次结算过账。事件与订单状态在结算之后才变成 completed

二、认不出的状态一律告警,不要 fallback


switch (status) {
  case "completed": …
  case "failed":    …
  …
  default: alert(status);   // ← 不是 fallthrough 到「处理中」
}

fallback 成「处理中」的表现是:一个我方新增的终局状态在你这边永远停在处理中,用户永远看不到结果,而你的监控一声不响。我方承诺新增枚举前在变更日志登记。

三、按 status_version 合并

事件与轮询会同时到达,顺序不保证。只许向前更新


if (incoming.status_version > local.status_version) apply(incoming)

相关