惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News | PayPal Newsroom
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
Forbes - Security
Forbes - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
Last Week in AI
Last Week in AI
Blog — PlanetScale
Blog — PlanetScale
Hacker News: Ask HN
Hacker News: Ask HN
H
Heimdal Security Blog
D
Docker
Cloudbric
Cloudbric
P
Privacy International News Feed
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Tenable Blog
Scott Helme
Scott Helme
人人都是产品经理
人人都是产品经理
Recent Announcements
Recent Announcements
P
Palo Alto Networks Blog
小众软件
小众软件
L
LINUX DO - 最新话题
美团技术团队
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
雷峰网
雷峰网
Microsoft Security Blog
Microsoft Security Blog
The Hacker News
The Hacker News
Webroot Blog
Webroot Blog
T
Tor Project blog
G
Google Developers Blog
A
About on SuperTechFans
Y
Y Combinator Blog
K
Kaspersky official blog
A
Arctic Wolf
量子位
I
InfoQ
V
Visual Studio Blog
T
Troy Hunt's Blog
C
Cybersecurity and Infrastructure Security Agency CISA
J
Java Code Geeks
博客园 - 【当耐特】
GbyAI
GbyAI

博客园 - 云飞扬

揭开文档在线编辑和预览的神秘面纱 AI的正确使用方法 详解HFBPM开发框架(下) 详解HFBPM开发框架(中) 详解HFBPM开发框架(上) 浅谈数据访问层 流程梳理的重要性 数据库升级工具 HF Code Designer 代码生成器 HF工作流引擎与现有业务系统的整合 一步一步学习开发BPM工作流系统--------(七)BPM表单设计和业务展现平台 一步一步学习开发BPM工作流系统--------(六)BPM流程设计器(2) 一步一步学习开发BPM工作流系统--------(六)BPM流程设计器(1) 一步一步学习开发BPM工作流系统--------(五)用户、组织机构和权限管理 一步一步学习开发BPM工作流系统--------(四)BPM数据库访问层 一步一步学习开发BPM工作流系统--------(三)开发WinForm的应用平台-2 - 云飞扬 一步一步学习开发BPM工作流系统--------(三)开发WinForm的应用平台-1 一步一步学习开发BPM工作流系统--------(二)BPM工作流系统的组成部分 - 云飞扬 一步一步学习开发BPM工作流系统--------(一)为什么要开发工作流系统 支持多数据库本地和远程调用的数据访问层架构
菜鸟电子面单对接技术方案(link)
云飞扬 · 2019-10-23 · via 博客园 - 云飞扬

一、背景

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

二、需求

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

三、方案

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

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

 

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

四、设计

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

    对接流程:

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

   

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

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

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

五、准备工作

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

1、  json、xml

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

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

2、  http请求get、post

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

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

3、  websocket

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

六、效果图

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

1、发货单的管理界面:

2、快递面单打印:

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

七、注意事项

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

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

 

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

3、  发货地址要与申请网点申请时发货地址一致,否则获取面单时会报错,可以调用

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

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