一、对接卡住,多半不是技术问题
货主系统里一个「订单」,在承运方的系统里可能对应三样东西:一张运单、一次派车、一段实际执行的运输任务。这三者之间不是一一对应的关系——一张运单可以覆盖多个订单,一次派车也可能一次性拉走好几个订单的货。口径从这里开始就分叉了。
真正让对接做不下去的,通常是下面这几种情况:货主系统里的单号规则和承运方生成的单号规则对不上;货主把「已下单」理解成承运方已经收到货,但承运方系统里这会儿还只是待排车;两边对「货已签收」的定义差着一步——一方以回单上传为准,一方以现场签收为准。
这些不是谁对谁错的问题,而是没有提前对齐口径。等到货出了问题,双方各自打开系统查,屏幕上显示的是两套不同的世界,这才是最耗时间的部分。
二、先把单号这件事说清楚
单号是对接的锚点,所有数据都挂在单号上,所以它必须最先定下来。
- 谁生成、什么时候生成:货主系统先有订单号,承运方受理后再生成运单号,这两步是分开的。运单号可能在货主下单后很快就有,也可能要等到排车之后才生成——这取决于承运方的流程。货方如果要拿运单号做自己的关联,需要知道它在什么时间点出现。
- 一票货对应几个单号:如果是零担拼车,货主的货会和别人的货拼在一辆车上,承运方可能有整车运单号,但也可能有针对每个货主的分单号。发货前问清楚「我该用哪个号查我这票货」,比事后在两个号之间猜要可靠。
- 换号的情况怎么办:中转、拆单、补车都可能产生新单号。原来的号是作废、还是保留并指向新号,这一条如果不约定,货主的系统里就会出现一个查不到任何东西的号。
- 谁的系统是主:如果两边都生成单号,一定要明确以哪个为准,另一个是映射过去还是仅作参考。
一个实用的做法是:约定「货主订单号」与「承运方运单号」的对应关系由谁维护、在哪一侧维护。这一条定了,后面的字段和节点才有地方挂。
三、字段口径:同一列数据,两边理解不同
接口能通不代表数据对。常见的错位集中在几个字段上。
- 重量与体积:货主系统里的重量可能是含包装的毛重,承运方计费用的是计费重;体积可能是货主自己量的外形尺寸,也可能是按标准箱型折算的。发车前就把「我给你的体积是什么口径」说清楚,双方的报价才对得上。
- 件数与包装:一箱、一托、还是一件,是货主的口径;到车上一件一件数还是按包装单位数,是承运方的口径。这个差别在装车时就可能出现分歧。
- 地址:货主系统里的是客户下单时填的收货地址,现场实际卸货的地址可能不同(仓库、工地、门岗自提点)。两边如果都存一份地址而不做区分,到了现场容易找错地方。
- 时间:货主填的是「要求到货时间」,承运方系统里的是「计划送达时间」。这两个字段如果名字一样但含义不同,对接后就会出现货主以为承诺了、承运方以为没承诺的情况。
比较稳妥的做法是在对接初期先拿三五票真实业务跑一遍,逐字段核对双方的值是不是同一个东西。这件事花的时间,比上线后逐单排查省得多。
四、节点回传:两边要有同一套「事情发生顺序」
节点回传是货主最关心的部分,也是最容易出问题的部分。核心不在于回传多快,而在于双方对节点的理解一致。
- 节点要有明确的定义:比如「已提货」是指货装上车了,还是车开走了;「已送达」是指到了收货人手上,还是车到了卸货点。定义要落在动作上,不要落在部门或系统上。
- 节点要有责任主体:每个节点由谁触发、谁确认,是货主、承运方还是现场人员,事先讲明。否则会出现货主在等一个承运方没打算发的节点。
- 异常也要有节点:延误、破损、改址、拒收,这些是货主最想知道的事,却常常因为「不是正常流程」而没有对应的回传动作。正常的路径和异常的路径,应该一样被设计进去。
- 状态回退要能表达:货到了之后又退回、签收了又发现少件,这些情况在现实里很常见。如果状态只能单向流转,就只能靠人打电话解释。
还有一件常被忽略的事:回传的时间戳要用谁的时间。承运方系统、司机手机、货方系统三方的时钟往往有偏差,货方按时间做统计时会出现货还没到、统计已经归到昨天的这种情况。约定以哪一方的时间为准,可以避免这类误会。
五、出了问题,从哪一步查起
对接上线之后难免有对不上的情况。有一个固定的排查顺序,可以省掉大量来回。
- 先查单号对应关系:两边的号是不是能互相对上。对不上,后面都不用看了,这是基础数据的问题。
- 再查字段:对着同一票货,把两边的重量、体积、件数、地址、时间逐个比。哪一列对不上,问题通常就在哪一列。
- 然后查节点定义:两边对「已提货」的理解是不是一样。如果字段都对但节点对不上,那就是口径问题不是数据问题。
- 最后查异常路径:这一票是不是走了异常流程(延误、改址、拒收)。正常路径的字段都正确但状态不对,多数是异常没有回传动作。
把这套顺序固化成排查清单,双方处理争议时会快很多,也能避免把数据问题当成时效问题、把时效问题当成数据问题。
六、几个容易忽略的细节
别让对接成为唯一入口。系统是给效率用的,不该成为出问题时唯一的沟通渠道。发货前保留一个能直接找到人的方式,比多写几个字段更有用。
权限与可见范围要对齐。货主在自己系统里能看到的节点,不一定等于承运方已经完成的节点。比如货方看到「运输中」,可能实际的车还没到装货点。状态名称要描述已发生的事实,而不是下一步计划。
对接要有专人。两边各指定一个人负责字段口径和异常处理,比让双方所有相关人都参与沟通更有效率。
先跑通再扩量。用少量真实业务把整条链路跑顺,再逐步放量。反过来做,一上来大量单子涌进来,出了偏差很难定位是哪一环的问题。
留一份对接说明。字段含义、节点定义、异常处理、单号规则,写成双方都认可的文档。它在换人、换系统、争议处理时的作用,比任何一次口头沟通都大。
七、我方的边界
需要说清的是,系统对接能解决的是「信息怎么传」,解决不了「承诺怎么定」。承运方系统里的时效节点,反映的是实际执行情况,它不会因为货方系统里填了一个更早的时间就自动变成承诺。反过来,我方能提供的是节点回传的及时性和准确性,以及把异常按实际情况报出来;不能承诺的是外部路况、天气、管制这些不在我方控制范围内的变化。
把这些讲清楚,比反复解释一次「为什么系统显示的和我预期的不一样」更有用。如果贵方的系统需要和我们的运单流程对接,可以先把字段清单和节点定义拿出来,我们逐项对一遍,把容易混淆的几处先说清。