ENGINEERING NOTE 17 / 50 · SMS

切换接码供应商时如何保住旧订单

OPEN RAMBO ·

新订单路由可以改变,但旧订单归属不能随之改写。每单保存原供应商引用,并贯穿整个生命周期。

本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。

选择与归属分离

路由策略只在创建新单时选择供应商。后续查询、取消和退款使用已保存归属。取消时读取当前默认值,会把旧供应商订单号发给另一个系统。

统一面向用户的状态

把上游状态映射到稳定产品模型,内部保留原事件分类供诊断。用户使用产品不需要供应商选择器。统一界面不能以删除失败证据为代价。

回滚只影响新流量

回滚改变未来订单分配,不原地迁移活跃订单。旧适配器保留到未完成订单和资金核对结束,移除前测试历史记录只读访问。

示意流程

create: provider = routing_policy.choose(request)
read: provider = order.provider_id
cancel: provider = order.provider_id
refund: ledger_key = order.original_debit_id

如何验收

切换前后各建测试订单,核验查询和取消分别使用自身已记录供应商。

继续阅读