菜鸟电子面单对接技术方案(link)

1、背景

        快递业务突飞猛进,收发快递是生活中不可缺乏的一部分了,特别是作微商的商家,天天发送大量的快递。填写快递单已经成为过去式,快递小哥上门收件的时候,都使用手持的中端设备,不再用客户填写快递单了。技术的更新带来的方即是有目共睹的。然而面对天天几十件的发送量,这种方式仍是有点慢,且不说快递小哥有多少耐心,时间久了也没有那家快递单独为你服务,这是其一,其二是快递单和包裹是否及时准确的对应,这也是在发送大量快递 时候常常搞错的事情,那么有没有一种方法,本身打印快递单,本身给包裹贴上快递单呢?答案是,有!这在之前是不可能实现的,这几年各快递公司都推出了本身的接口服务,供大客户的erp对接,从而实现面单打印。可是这种方式须要跟各家快递公司对接,每家快递公司的接口不同,这形成了很大的工做量。有没有一种方式能够对接各大快递公司呢?答案是,有!那就是菜鸟物流云,这里不得不咱给马云点赞,老马确实改变了生活。菜鸟物流云提供了与各快递公司对接的接口。本文根据咱们对接的经验总一下总结,因为菜鸟物流云也是刚刚推出,功能和文档上不是那么完善,咱们把遇到的坑和注意事项写下来,供你们参考。web

2、需求

       咱们再来梳理一下咱们的需求,咱们须要一种方式,可以打印快递单,而后把快递单贴在要发送的包裹上。这是最直接的需求,隐含的需求是商品从销售到配货发货都要管理起来,发送快递只是整个销售流程中的一部分,咱们不只要能本身打印快递单,更重要的是能查询那些已发货,那些未发货,发货的对应的快递单号是多少。这个销售过程的管理是统一不可分开的,使用一套系统来完成,若是销售系统与快递打印分开,那么会形成双倍的工做量,还容易出错。咱们有三款进销存产品:商贸通鞋服通医药通,详情能够参加网站:www.hfbpm.com,快递面单打印需求也是上述产品的需求。json

3、方案

        需求明确了,咱们来选择技术方案,前面提到了不使用与各快递公司的对接,而是采用与菜鸟物流云对接。这里说明一下,菜鸟物流云属于淘宝开放平台的一部分,淘宝开发平台提供了不少种对接接口,包括商品、销售单等等,几乎涉及到的业务都在该平台上开放了接口。这也是咱们此次对接的时候才发现的,后续会继续与之对接,实现咱们的禾丰进销存系统与淘宝卖家系统的对接。浏览器

淘宝开放平台提供了两种快递面单接口,一种是淘宝商家TOP接口,一种是菜鸟物流云Link接口。具体介绍请查看淘宝开发平台的文档:websocket

 

https://open.taobao.com/doc.htm?docId=107052&docType=1,咱们采用菜鸟Link接口对接。网络

4、设计

      方案肯定后,咱们须要进行系统功能的设计,首先咱们要作技术性的尝试,对菜鸟Link接口中的方法进行模拟测试。下面咱们介绍具体的对接过程和遇到的坑。socket

    对接流程:

     对接流程以下图,须要介绍几个概念,ISV:Independent Software Vendors,独立软件开发商,咱们作对接,咱们就是ISV;CP:Cainiao Partner 菜鸟合做伙伴,官方介绍太简单,这里咱们补充,CP就是快递物流公司,如韵达快递、顺丰快递等,目前各大快递物流公司都已接入;LINK:Logistics Integration Network,物流集成网络,这个也要补充一下,说白了就是菜鸟物流云接口的一个统称,淘宝那个接口叫TOP,这个叫Link(名字起的都挺有水平~)。post

   

  1. 根据上图流程首先咱们在菜鸟物流云系统注册成为ISV,而后发布API服务。这个过程参考官方文档,比较简单,文档写的比较详细,这里不赘述。
  2. 还要注册一个商家账号,仍是在这个系统上申请,这一点当初我也不理解,官方的解释以下图:        

        如今理解了,ISV是软件开发商,有权利发布接口服务,商户是真正的使用者,例如某服装店,淘宝上的某个卖家,商户可使用多个ISV提供的服务,一样ISV也能够为多个商户服务,这样就实现了三方受权。商家账号申请成功后,进行商家受权,获取到TOKEN,ISV对接的时候要使用,因此在ISV的ERP系统里,至少要设计能够存放多个商家的token,每一个商家使用本身的token,这个不能乱了。测试

       3.     使用商家账号购买面单,前面是技术对接,这一步是业务对接,注意必定是使用商家账号,而不是ISV账号。这个须要跟快递公司谈判了,你要发哪家的快递就要像那家的快递申请,通常是向就近的网点申请,申请的审批工做也是由他们审核的,咱们申请的时候就是进行了电话沟通,说明了用途,基本上他们常常跑大家那片都比较熟悉,没啥障碍,只要谈好面单价格和取货件方式都能经过。我申请了2次才经过,第一次没有打电话沟通,他们直接给拒绝了,通常申请3个工做日内必须答复,逾期会罚款(后来知道的)。网站

5、准备工做

        前面的申请都作完后,就开始做技术对接了,总结一下前面的申请:ISV资质认证,ISV应用审核、商户订购关系购买,三个缺一不可。购买面单后,会给你面单纸,还须要一台打印机,网上购买或者网点的推荐均可以,型号必定要和面单纸对应。固然,测试的时候打印机能够暂时使用普通的打印机代替,也能够打印到pdf或者图片,等上线使用的时候再购买配套打印机。spa

一、  json、xml

Link接口的数据交互格式是xml或者是json,咱们使用本身的Web开发平台,这些底层的处理方法都已经实现了,就不是技术难题了,没有实现的须要本身编写xml或者json相关的处理方法。

这里注意沙箱测试环境只支持xml方式,不支持json方式,这个不知道为啥,有点不理解,多是待完善吧。

二、  http请求get、post

Link接口的通信协议是http协议,咱们使用本身的Web开发平台,这些底层的通信协议都已经实现,没有实现的须要本身编写请求get、post的方法。

这个方法是调用link Api的通用方法,注意参数和注释,咱们是使用C#语言来实现的,供参考。

三、  websocket

websocket是与浏览器相关的,是集成到浏览器中的,不须要引用第三方的js,目前流行的浏览器都支持这个技术。面单数据打印的时候经过该协议与菜鸟打印组件交互。

6、效果图

具体的对接公司文档都比较详细,下面是对接完成的效果图。

一、发货单的管理界面:

二、快递面单打印:

三、快递面单打印部分代码:

 

7、注意事项

一、  沙箱测试使用固定的参数,支持xml格式,下图中的参数是固定。

二、  收货地址必须包含省、市和详细地址,link接口市是容许为空的,可是若是为空,那么快递面单打印的时候没有三段码,没有三段码的快递面单是无效的。以下图:

 

正确的收货地址写法是 北京北京市天通苑东三区XXX。最好是包含省、市、县、详细地址。

三、  发货地址要与申请网点申请时发货地址一致,不然获取面单时会报错,能够调用

TMS_WAYBILL_SUBSCRIPTION_QUERY 接口查看,省、市、县、镇、详细地址一个字一个标点符号都不能错。

暂时总结这么多,欢迎技术交流!

相关文章
相关标签/搜索