菜鸟电子面单对接技术方案(link)
一、背景
快递业务日新月异,收发快递是生活中不可缺少的一部分了,特别是做微商的商家,每天发送大量的快递。填写快递单已经成为过去式,快递小哥上门收件的时候,都使用手持的中端设备,再也不用客户填写快递单了。技术的更新带来的方便是有目共睹的。然而面对每天几十件的发送量,这种方式还是有点慢,且不说快递小哥有多少耐心,时间久了也没有那家快递单独为你服务,这是其一,其二是快递单和包裹是否及时准确的对应,这也是在发送大量快递 时候经常搞错的事情,那么有没有一种方法,自己打印快递单,自己给包裹贴上快递单呢?答案是,有!这在以前是不可能实现的,这几年各快递公司都推出了自己的接口服务,供大客户的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(名字起的都挺有水平~)。
- 根据上图流程首先我们在菜鸟物流云系统注册成为ISV,然后发布API服务。这个过程参考官方文档,比较简单,文档写的比较详细,这里不赘述。
- 还要注册一个商家帐号,还是在这个系统上申请,这一点当初我也不理解,官方的解释如下图:
现在理解了,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 接口查看,省、市、县、镇、详细地址一个字一个标点符号都不能错。
暂时总结这么多,欢迎技术交流!
菜鸟电子面单对接技术方案(link)的更多相关文章
- ecstore菜鸟电子面单对接摘要
1.token长度要150以上 2.redirect_uri不一致,保持一致吧先 3.返回的xml解析问题,php5.3里得到的不是数组,而是simplexml,还得再转化一下 4.后期考虑做成通用型 ...
- 通过快递100获取快递单号,结合c-lodop热敏纸打印 – 通过菜鸟ISV/自研ERP使用菜鸟电子面单
https://www.1024cc.cn/index.php/2019/04/29/%E6%89%93%E5%8D%B0%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95/ 打 ...
- EMS电子面单接口对接使用-免费版
快递鸟电子面单接口,可一次对接15家快递公司, 无需和每一家快递公司做对接.支持快递有四通一达.顺丰.EMS.宅急送.德邦.优速等15家快递公司,对顺丰有电子面单服务需求的可以选择顺丰自有的电子面单或 ...
- 基于PHP的对接电子面单接口平台案例
电子面单接口目前有三种对接方式,快递电子面单接口.菜鸟电子面单接口和快递鸟电子面单接口.这三种接口各有特点. 一.电子面单接口定义 1. 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必 ...
- 基于PHP的对接免费电子面单接口平台的案例-快宝开放平台
一.电子面单对接平台 电子面单对接平台分为两类: 1 .各大快递公司自有的电子面单接口开放平台:对接起来麻烦,需要每个快递公司分别调试接口,费时费力. 2 .第三方快递开放平台:如快宝开放平台(htt ...
- 各种电子面单Api接口免费对接-快宝开放平台
1.什么是电子面单? 快递公司联合向商家提供的一种通过热敏纸打印输出纸质物流面单的物流服务,并且承载分单自动化算法等数据服务,是快递行业赋能的基础产品和服务. 2.电子面单长什么样? 各快递公司有自己 ...
- 各种电子面单_Api接口
电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务.通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍.电子面单以接口形式嵌入到自己的系统.网站上,可以在自己的平台操作打印电子面单. ...
- 快递鸟顺丰电子面单接口API-JAVA
一.电子面单对接案例 1.接口描述 接口支持的消息接收方式:HTTP POST 请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;cha ...
- 电商平台如何接入快递鸟电子面单API?
快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...
随机推荐
- java标识符、关键字、基本数据类型
一 标识符与关键字 1.标识符 在程序中用于定义名称的都为标识符,如文件名称.类名称.方法名称或变量名称等, 在Java中标识符的定义格式由字母.数字._(下划线),$所组成,不能以数字开头, 不能是 ...
- C#LeetCode刷题之#171-Excel表列序号(Excel Sheet Column Number)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3852 访问. 给定一个Excel表格中的列名称,返回其相应的列序 ...
- Golang Gtk+3教程:GtkBuilder使用XML构建UI
在这节我将介绍GtkBuilder,其使我们可以从一个描述界面的xml文件构建UI.而这个文件我们可以使用Glade生成,这会极大的方便我们编辑用户界面.这节我们会使用到这么一个XML文件,名字为Bu ...
- unity探索者之微信分享所有流程,非第三方插件
版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/7560575.html 很久没有写新博客了,前段时间有些忙,这几天趟了几个微信分享的 ...
- Mybatis-plus 实体类新增属性,使用实体类执行sql操作时忽略该属性 注解
@TableField(exist = false) 注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不 ...
- SpringMVC使用Session
Session在用户登录,一些特殊场合在页面间传递数据的时候会经常用到 @ 目录 修改IndexController check.jsp 效果 修改IndexController 映射 /check ...
- Spring Boot系列(四):Spring Boot源码解析
一.自动装配原理 之前博文已经讲过,@SpringBootApplication继承了@EnableAutoConfiguration,该注解导入了AutoConfigurationImport Se ...
- 月历输出php代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaFX桌面应用-SpringBoot + JavaFX
SpringBoot对于Java程序员来说可以是一个福音,它让程序员在开发的时候,大大简化了各种spring的xml配置. 那么在JavaFX项目使用SpringBoot会是怎么样的体验呢? 这次使用 ...
- 深入了解v-model流程
v-model原理 vue中v-model是一个语法糖,所谓的语法糖就是对其他基础功能的二次封装而产生的功能.简单点说,v-model本身就是父组件对子组件状态以及状态改变事件的封装.其实现原理上分为 ...