交易系统接第三方下单接口时,一个很常见的设计分歧是:本地持仓记录到底应该在调用下单接口前创建,还是等交易所返回成功后再创建。大多数场景里,更稳的做法是先创建本地记录,再把外部下单结果回填进状态机。
为什么更建议先建本地记录
因为第三方接口天然不可靠,可能超时、拒单、重复回调,甚至已经成交但响应丢失。如果你等外部接口成功后再落库,本地就可能出现“外部有订单,本地没记录”的断层,后续补偿会很痛苦。
本地记录不要直接当成已成交
先建记录不代表先认定成功。更合理的做法是把初始状态设为“待下单”或“下单中”,拿到交易所返回的订单号后再更新为“已提交”,后续再根据回报推进到“部分成交”“已成交”或“失败”。
真正关键的是把状态流转设计清楚
只讨论建表时机还不够,必须同时定义幂等键、重试规则和补偿任务。比如同一个业务请求只能生成一条本地订单,重复请求要能识别;外部超时后,要能通过轮询或回报把最终状态补齐。
什么情况下可以后建
只有在你只是做极轻量的演示,或者本地根本不承担审计、风控、对账职责时,才可能接受“接口成功后再落库”。只要系统要长期运行,这种方案通常都会留下隐患。
结论
交易系统里,持仓或订单记录通常应该先在本地创建,再用明确的状态机衔接第三方下单结果。先有可追踪记录,比事后补救稳定得多。
正文完




