在电商和新零售快速发展的今天,企业管理者们都在追求更高效的仓储物流管理。然而,当企业尝试将ERP系统与第三方WMS系统对接时,往往会遇到各种各样的挑战:WMS数量太多需要分别对接、各家的接口标准不统一、数据格式不兼容、业务流程难协调......这些问题不仅增加了项目实施的难度,还可能影响企业的正常运营。
某服装品牌在全国有超过1000家门店,为了提升供应链效率,他们决定引入第三方仓储服务。然而,当他们尝试将自己的ERP系统与不同区域的仓库对接时,遇到了一个大问题:每个仓库使用的WMS系统都不一样,接口标准也各不相同。如果逐个定制对接方案,不仅开发成本高昂,后期维护也是一个巨大的挑战。
为了解决这些问题,阿里巴巴推出了奇门(QiMen)接口协议。这是一套标准化的仓储管理接口协议,就像一个'翻译官',帮助ERP和WMS系统进行顺畅的'对话'。它提供了一套标准化的接口规范,就像电器的'国标插座'一样,只要符合这个标准,任何ERP系统都可以轻松对接支持奇门协议的WMS系统。
二、什么是奇门?奇门,全称“奇门云网关”或“奇门API网关”,是阿里巴巴集团针对电商领域推出的一套技术标准和解决方案。它基于高可用分布式集群技术构建,提供行业对接标准和API托管服务,帮助商家在新零售场景下打通内外异构系统,实现不同异构系统之间低成本、高效率地对接和安全、稳定地数据传输。奇门云网关致力于解决新零售场景下不同系统间通信协作中的相关问题:
提供高可用网关,保障网络安全、通信安全和接入稳定性;对于行业的标准场景的对接(如ERP-WMS、ERP-POS等)制定标准化的协议,收敛适配成本,服务商的系统只需一次对接,即可适配所有合作伙伴系统;对于非标准化的场景对接,提供网关基础能力,支持服务商做自己的服务开放;提供业务全链路的性能监控、业务效率监控能力,助力商家不断提升效率。对于ERP或者仓储业务的产品经理来说,我们平常听过、见过最多的行业标准场景对接就是“ERP-WMS”,所以本篇文章拆解的接口清单也主要是针对仓储业务的场景。
2.1 奇门仓储的对接方案以下内容摘录自奇门“ERP-WMS奇门仓储场景”的官网文档中,如需要访问原文,可点击:
https://open.taobao.com/doc.htm?docId=118401&docType=1
目前商家使用的各个业务系统之间依靠 ISV 帮助实现 ERP 到 WMS 的对 接,如果有多仓需求的商家还需要使用到 2 套以上的第三方仓储服务所提供的 WMS 软件,ERP、WMS 各自对接,对接的总工作量为 N*N 倍,不但给 ISV 的开发带来了极大的成本,对于后期维护,也将是一项艰巨的任务,如下图所示:
图片
通过奇门项目后可使原有的网状对接结构变为一对一的对接方式,ERP、 WMS 只需要与奇门数据总线对接一次即可完成所有系统的适配(特殊场景可 能采用扩展字段的方式给与支持),如下图:
图片
接入奇门之后,ERP、奇门、WMS这三者的调用关系如下所示。
图片
正向调用:前端ERP系统通过TOP接口与奇门项目应用进行交互,对于想要发送到WMS的请求首先发送到奇门应用,由奇门负责数据的解析、字段映射、数据翻译,再将处理后的数据通过ERP系统所请求的目的地发送至WMS系统;WMS系统收到请求后,将返回结果送回至奇门应用,由奇门应用统一返回至ERP系统。
反向调用:WMS系统主动向ERP系统发出状态更新请求也是类似以上的访问步骤。
2.2 为什么需要奇门?当不启用奇门仓储的对接方案,而是用传统的ERP对接外部WMS的方案时,会遇到的一些问题:
每个WMS都有自己的接口规范数据格式各不相同业务处理逻辑不统一异常处理机制不一致举个例子,就拿入库单来说:
A仓库要求用JSON格式B仓库只接受XMLC仓库还在用CSV文件传输字段名称还都不一样...ERP每次接入一个新的仓储服务商的时候,都要重新开始研究对方的接口文档,评估接口是否满足业务的需求,确认接口中的业务逻辑和字段细节等,而且每家WMS的业务逻辑和接口逻辑会有差异,这就导致我们要写N套对接代码,维护成本很高。
如果选择接入了奇门仓储的对接方案中,ERP和奇门云网关完成相关的接口对接,它会提供了一套标准的仓储对接接口规范:
统一的接口协议标准化的数据格式规范的错误处理机制完整的业务场景覆盖作为ERP方,我们只需要和奇门对接一次,然后就能支持所有遵循奇门协议的WMS系统,后续再引入其他的WMS的时,就可以缩短开发周期,快速接入新的仓储服务商。
2.3 奇门仓储的接口文档如果想要知道奇门仓储的接口文档,则可以访问此地址:
https://open.taobao.com/api.htm?docId=24690&docType=2
前段时间,我花了一些时间把里面的关键内容整理成了一个Excel表,方便更加直观地了解不同接口有什么作用,有什么价值。接下来我也会基于这个文档,来拆解一下我研究奇门接口的一些发现和总结。
图片
三、奇门接口拆解3.1 接口分类通过研究奇门的接口文档,我把它的接口分为以下几类:
图片
奇门仓储的接口文档中,一共有63个接口。但是在ERP对接WMS的业务场景中,实际上并不需要用到这么多接口,所以我将一些需要“重点关注和研究”的接口标记了出来,这样能让我们更专注于研究那些重要的、高频使用的接口。
3.2 商品资料类图片
商品资料类接口商品资料类的接口比较简单,一般就是一个商品资料推送,一个商品资料查询就够了。商品资料来源于ERP,ERP根据WMS的接口推送相关的字段过去,一般不需要从WMS端发起什么请求。
奇门仓储接口中,商品资料的字段很多、很全、很丰富,主要是考虑到不同行业,不同商品类型的仓储作业要求不一样,所以就做了一个比较强大、通用的兼容。
作为ERP方,在推送商品资料字段的时候,需要重点关注一下这么几个字段:
一品多码,商品如果涉及到多条码,那么这些条码都要推送;商品类型,对商品的类型进行定义,可能是正常商品,组合商品,赠品,包材,耗材,虚拟商品等;效期管理,如果商品需要效期管理,那么得要启用,而且要维护保质期天数、禁收、预警、禁售天数等信息;批次管理,如果商品要启用批次管理,那么得要启用。一些医药品需要入库采集生产批号,批准文号等信息;SN(唯一码)管理,如果商品要启用SN管理,那么得要启用。仓库在收货的时候会采集SN码(序列号);以上几个字段对于WMS的业务操作来说是比较核心且关键的内容,只有这些基础资料推送的准确,后续WMS在作业的时候才能更加顺畅。
3.3 入库业务类图片
入库单接口交互示意图图片
退货单接口交互示意图奇门仓储的入库类接口把正向的入库和逆向的退货入库区分成了2个不同的接口,在对接的时候需要ERP结合不同的业务场景分别去请求不同的接口。
ERP推送入库类单据给WMS,是请求的“创建接口”。WMS收到了入库单据之后,等待货物送达仓库,然后执行收货、清点、质检、上架操作,等这些操作完成之后,需要回传最终处理的结果数据给到ERP,此时是WMS主动请求ERP的回调接口,在奇门中被定义为“确认接口”。如果ERP想要主动去查询WMS入库单的作业情况,那么可以主动请求“查询接口”获取相关的信息。
需要注意的是:正向的入库接口和逆向的退货入库的接口,都有“创建”和“确认”的接口,但是正向的入库接口多了一个“入库单查询的接口”。
无论是正向的入库创建接口,还是逆向的退货入库创建接口,以下几个字段都是需要重点关注和研究的:
业务类型,不同的入库类型需要可能要请求的接口不一样,所以最好是在业务类型中标记清楚相关的枚举值;关联订单,ERP中不同的业务单据可能都要推送到仓库去执行入库,所以可以在入库单中关联一下ERP的业务单据和业务类型;库存类型,奇门仓储的接口规范中,库存类型是一个比较重要的概念,一般会分成“ZP=正品;CC=残次;JS=机损;XS=箱损;默认为ZP”;生产日期、失效日期、批次信息,在入库单中可以推送商品的生产日期、失效日期和批次信息,但是这部分是可选的。如果没有推送这些数据,则仓库在收货的时候根据商品基础资料的一些配置,判断一下收货的时候要不要采集这些信息;SN编码列表,和第4点提到的信息类似。如果推送到了仓库,那么仓库在收货的时候可以查看到这些信息,并且和到货实物的信息比对;如果没有推送这些信息,则仓库根据相关的配置,判断收货的时候要不要采集SN编码的信息;3.4 发货&出库业务类图片
发货单接口交互示意图图片
出库单接口交互示意图奇门仓储把销售类型的订单出库定义为“发货接口”,而把非销售型的单据出库定义为“出库接口”。所以ERP在推送出库单的时候也要注意接口对应的业务场景。
销售类型的订单一般是指和电商订单挂钩的单据,这类单据一般会关联店铺名称,店铺所属平台,物流商信息,交易的金额等。而非销售类型的订单,一般是指和电商订单无关的单据,往往是ERP自身的其他业务引发的,比较常见的就是调拨出库,采购退货出库,其他出库,虚拟出库,线下B2B出库等。
ERP推送发货/出库单据给WMS,是请求的“创建接口”。WMS收到了发货/出库单据之后,可以执行分波、拣货、复核、称重等,完成这些操作之后,需要回传最终处理的结果数据给到ERP,此时是WMS主动请求ERP的回调接口,在奇门中被定义为“确认接口”。如果ERP想要主动去查询WMS发货单的作业情况,那么可以主动请求“查询接口”获取相关的信息。
无论是发货单接口,还是出库单接口,两者底层的逻辑都是和出库发货有关系,所以接口中这几个字段都是需要重点关注和研究的:
业务类型,不同的出库类型需要可能要请求的接口不一样,所以最好是在业务类型中标记清楚相关的枚举值;物流公司编码,发货单(销售类型订单)的接口对物流公司编码更加重视,因为电商订单普遍是小包裹居多;而出库单(非销售类型订单)的接口则对物流公司编码没那么重视,因为B2B的场景下物流的用法和小包裹不太一样;库存类型,奇门仓储的接口规范中,库存类型是一个比较重要的概念,一般会分成“ZP=正品;CC=残次;JS=机损;XS=箱损;默认为ZP”;生产日期、失效日期、批次信息,在发货单或者出库单中也可以推送商品的生产日期、失效日期和批次信息,但是这部分是可选的。如果推送了这些信息,就意味着是要指定批次让仓库去出库;如果没有推送这些数据,则仓库会按照自己的库存周转策略执行对应的批次库存分配;发货单或者出库单都会有一个“确认接口”,表示仓库出库完成了,回传具体的出库信息和物流包裹的信息。此时接口中比较关键的一个逻辑就是“多批次回传”,因为发货单接口一般是B2C的订单,这类订单普遍是要一次性出库的,不能分批发货、缺量发货。而出库单接口一般是B2B的订单,这类订单是可以支持多批次回传数据,多次发货,甚至是缺量发货的。“确认接口”中判断多批次回传的字段是“confirmType”,如果为0则表示已全部回传,如果为1则表示尚未完结。
3.5 库存管理类图片
库存管理类接口交互示意图库存管理类的接口有比较多,可以初步分成3类:
ERP主动查询WMS的。例如ERP查询WMS的库存,可以用不同的条件来查询;ERP推送单据指定给WMS,然后仓库作业后再回传结果的。例如库存调整单,库内加工单等,都需要先从ERP推送单据,然后仓库按指令执行,最后回传结果;WMS主动回传数据到ERP的。例如盘点结果,库存异动流水等,这些可能是仓库端自行发起的操作,但是为了确保WMS和ERP的库存结果保持同步,所以WMS也会主动推送给ERP;库存管理类的接口除了上述提到的内容之外,还有一些比较小众、低频的接口内容,在此处省略介绍,感兴趣的朋友自己去官方的接口文档中查阅即可。
3.6 单据操作类和其他类有一些接口从官方的手册中不太好分辨其用途,或者是有一些接口可以分辨用途但是不好归类,我都统一放在了“单据操作类”或者是“其他类”。
在ERP对接WMS的过程中,“单据取消接口”是一个很重要,也很容易被忽略的一个接口。理论上来说,只要单据能从ERP推送到WMS, 那么在合适的时机之前,ERP也可以调用“单据取消接口”,将这些已经推送到WMS的单据给取消。所以在实际输出产品需求文档的时候,要注意统计一下一共对接了多少下推的接口,那么对应取消接口也都要安排上,防止遗漏场景,导致需求没有及时满足。
奇门仓储的官方接口中,还有一些和新零售门店挂钩的接口,这一部分我也归类到了“其他类”。个人认为对接的频率不是很高,实际接触的场景也比较少,可以忽略,不需要过多关注和研究。
四、总结图片
ERP对接WMS的接口,从宏观视角来看,主要有以下几个步骤:
推送商品资料,从ERP推送到WMS中;推送入库单,从ERP推送到WMS中,当WMS作业完成之后还需要回传结果给ERP;推送出库单,从ERP推送到WMS中,当WMS作业完成之后还需要回传结果给ERP;查询库存,ERP主动查询WMS中的库存;库存异动通知,WMS主动回传仓库变化的库存动作/结果给EERP;通过对奇门的仓储接口文档的研究,我总结了以下几点心得和感触:
要关注接口的请求方是谁,接收方是谁,一般来说确认类(Confirm)和通知类(Report)是WMS端发起的,而同步类(synchronize),创建类(create),查询类(query)等是ERP发起的ERP产品经理/WMS产品经理们可以重点关注ERP和仓库相关的业务往来,门店、店铺相关的接口可以忽略,遇到了这个场景再去关注单个处理的接口和批量处理的接口背后的处理逻辑是相通的,所以重点研究和关注一下单个处理的场景即可奇门的接口中有很多抽象出来的标准化的处理逻辑,可以对一些重点关注的接口去深入研究传参、出参、单据结构等这些细节,会大有收获WMS端发起的请求,一般ERP这边要提供一个Webhook地址来接收,每个接口对应的Webhook UL都是一样的,但是一些拼接的参数则是由WMS端来拼接、补充 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。