全球账户 › 指南
哪些状态是终局、哪些还会动 —— 认不出的状态一律按未知处理并告警。
订单生命周期
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)