快递鸟是全球物流接口服务商,为电商 ERP、电商平台、仓储、清关公司提供物流跟踪、电子面单、智选物流、物流金融、在线下单等服务,解决电商的物流管理模块和金融模块。现就对快递鸟电子面单API做基本描述,并提供电子面单接口的对接方式。

一.接口介绍

快递鸟电子面单接口支持四通一达、顺丰、EMS、宅急送、德邦、优速等15家国内常用快递的面单打印。通过快递鸟接口在线打印电子运单,即时生成运单号,无需录单,提高发货效率,提升送达时效。打印速度提升 4-6 倍、省去录单环节、取消抽单环节、充当捡货单、提升送达时效。

传统面单VS电子面单:

对比项目 传统面单 电子面单
出错率
打印速度(张/分钟) 4~6 30~40
噪音
录单成本 2~3 0
机器成本(元/台) 800~1200 900~1000
面单信息 字迹不清晰 标准化打印
是否需要回填单号 无需回填,系统生成运单号直接回填

现行电子面单VS快递鸟电子面单:

对比项目 现行电子面单 快递鸟电子面单
单量要求(件/月) 一般1000以上 0
月结账号 需申请 无需账号
是否需要提前买单号 部分快递公司需要 使用时即时申请单号,无需提前购买

二.JAVA对接方式
(1)电子面单接口是快递鸟提供给独立电商、仓储管理系统、物流供应链等物流系统平台使用的下单接口。
(2)为客户解决在线发货需求,商户通过网络选择快递公司发送请求通知快递公司有快递要发货。
(3) 客户把数据通过此接口转发到快递鸟,由快递鸟为您安排快递员上门取件的服务。
(4)订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码。
(5)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
(6)请求系统级参数说明:

参数名称 类型 说明 必须要求
RequestData String 请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。 R
EBusinessID String 商户ID,请在我的服务页面查看。 R
RequestType String 请求指令类型:1007 R
DataSign String 数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后进行URL(utf-8)编码。详细过程请查看Demo。 R
DataType String 请求、返回数据类型:只支持JSON格式 O

备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)。

(7)接口地址:

API测试地址:http://testapi.kdniao.cc:8081/api/EOrderService

API正式地址:http://api.kdniao.cc/api/EOrderService

(8)请求内容字段定义

参数名称 类型 说明 是否必须
CallBack String 用户自定义回调信息 O
MemberID String 会员标识 O
CustomerName String 电子面单客户账号(与快递网点申请) O
CustomerPwd String 电子面单密码 O
SendSite String 收件网点标识 O
ShipperCode String 快递公司编码 R
LogisticCode String 快递单号 O
OrderCode String 订单编号 R
MonthCode String 月结编码 C
PayType Int 邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付 R
ExpType String 快递类型:1-标准快件 R
IsNotice Int 是否通知快递员上门揽件:0-不通知;1-通知;不填则默认为1 O
Cost Double 寄件费(运费) O
OtherCost Double 其他费用 O
Receiver Company String 收件人公司 O
Name String 收件人 R
Tel String 电话与手机,必填一个 R
Mobile String
PostCode String 收件人邮编 O
ProvinceName String 收件省(如广东省,不要缺少“省”) R
CityName String 收件市(如深圳市,不要缺少“市”) R
ExpAreaName String 收件区(如福田区,不要缺少“区”或“县”) O
Address String 收件人详细地址 R
Sender Company String 发件人公司 O
Name String 发件人 R
Tel String 电话与手机,必填一个 R
Mobile String
PostCode String 发件人邮编 O
ProvinceName String 发件省(如广东省,不要缺少“省”) R
CityName String 发件市(如深圳市,不要缺少“市”) R
ExpAreaName String 发件区(如福田区,不要缺少“区”或“县”) O
Address String 发件人详细地址 R
StartDate String 上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化,本文中所有时间格式相同 O
EndDate String O
Weight Double 物品总重量kg O
Quantity Int 件数/包裹数 O
Volume Double 物品总体积m3 O
Remark String 备注 O
AddServices
AddService Name String 增值服务名称 O
Value String 增值服务值 O
CustomerID String 客户标识(选填) O
Commoditys
Commodity GoodsName String 商品名称 R
GoodsCode String 商品编码 O
Goodsquantity Int 商品数量 O
GoodsPrice Double 商品价格 O
GoodsWeight Double 商品重量kg O
GoodsDesc String 商品描述 O
GoodsVol Double 商品体积m3 O
IsReturnPrintTemplate String 返回电子面单模板:0-不需要;1-需要 O

(9)返回参数定义

参数名称 类型 说明 必须要求
EBusinessID String 用户ID R
Order OrderCode String 订单编号 R
ShipperCode String 快递公司编码 R
LogisticCode String 快递单号 R
MarkDestination String 大头笔 O
OriginCode String 始发地区域编码 O
OriginName String 始发地/始发网点 O
DestinatioCode String 目的地区域编码 O
DestinatioName String 目的地/到达网点 O
SortingCode String 分拣编码 O
PackageCode String 集包编码 O
Success Bool 成功与否 R
ResultCode String 错误编码 R
Reason String 失败原因 O
UniquerRequestNumber String 唯一标识 R
PrintTemplate String 面单打印模板 O
EstimatedDeliveryTime String 订单预计到货时间yyyy-mm-dd O
Callback String 用户自定义回调信息 O

(10)JAVA对接案例

其中秘钥需要到快递鸟官网申请

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.security.MessageDigest;
/**
  *
  * 快递鸟电子面单接口
  *
  * @技术QQ: 4009633321
  * @技术QQ群: 200121393
  * @see: http://www.kdniao.com/MiandanAPI.aspx
  * @copyright: 深圳市快金数据技术服务有限公司
  *
  * ID和Key请到官网申请:http://www.kdniao.com/ServiceApply.aspx
  */
  
public class KdGoldAPIDemo {
     
     //电商ID
     private String EBusinessID= "请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx"
     //电商加密私钥,快递鸟提供,注意保管,不要泄漏
     private String AppKey= "请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx" ;  
     //请求url, 正式环境地址:http://api.kdniao.cc/api/Eorderservice
     private String ReqURL= "http://testapi.kdniao.cc:8081/api/Eorderservice" ;   
     
     /**
      * Json方式 电子面单
      * @throws Exception
      */
     public String orderOnlineByJson() throws Exception{
         String requestData= "{'OrderCode': '012657700387'," +
                 "'ShipperCode':'EMS'," +
                 "'PayType':1," +
                 "'ExpType':1," +
                 "'Cost':1.0," +
                 "'OtherCost':1.0," +
                 "'Sender':" +
                 "{" +
                 "'Company':'LV','Name':'Taylor','Mobile':'15018442396','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73号'}," +
                 "'Receiver':" +
                 "{" +
                 "'Company':'GCCUI','Name':'Yann','Mobile':'15018442396','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'}," +
                 "'Commodity':" +
                 "[{" +
                 "'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}]," +
                 "'Weight':1.0," +
                 "'Quantity':1," +
                 "'Volume':0.0," +
                 "'Remark':'小心轻放'," +
                 "'IsReturnPrintTemplate':1}" ;
         
         Map<String, String> params = new HashMap<String, String>();
         params.put( "RequestData" , urlEncoder(requestData, "UTF-8" ));
         params.put( "EBusinessID" , EBusinessID);
         params.put( "RequestType" , "1007" );
         String dataSign=encrypt(requestData, AppKey, "UTF-8" );
         params.put( "DataSign" , urlEncoder(dataSign, "UTF-8" ));
         params.put( "DataType" , "2" );
         
         String result=sendPost(ReqURL, params);
         
         //根据公司业务处理返回的信息......
         
         return result;
     }
     /**
      * MD5加密
      * @param str 内容      
      * @param charset 编码方式
      * @throws Exception
      */
     @SuppressWarnings ( "unused" )
     private String MD5(String str, String charset) throws Exception {
         MessageDigest md = MessageDigest.getInstance( "MD5" );
         md.update(str.getBytes(charset));
         byte [] result = md.digest();
         StringBuffer sb = new StringBuffer( 32 );
         for ( int i = 0 ; i < result.length; i++) {
             int val = result[i] & 0xff ;
             if (val <= 0xf ) {
                 sb.append( "0" );
             }
             sb.append(Integer.toHexString(val));
         }
         return sb.toString().toLowerCase();
     }
     
     /**
      * base64编码
      * @param str 内容      
      * @param charset 编码方式
      * @throws UnsupportedEncodingException
      */
     private String base64(String str, String charset) throws UnsupportedEncodingException{
         String encoded = Base64.encode(str.getBytes(charset));
         return encoded;   
     }  
     
     @SuppressWarnings ( "unused" )
     private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
         String result = URLEncoder.encode(str, charset);
         return result;
     }
     
     /**
      * 电商Sign签名生成
      * @param content 内容  
      * @param keyValue Appkey 
      * @param charset 编码方式
      * @throws UnsupportedEncodingException ,Exception
      * @return DataSign签名
      */
     @SuppressWarnings ( "unused" )
     private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception
     {
         if (keyValue != null )
         {
             return base64(MD5(content + keyValue, charset), charset);
         }
         return base64(MD5(content, charset), charset);
     }
     
      /**
      * 向指定 URL 发送POST方法的请求    
      * @param url 发送请求的 URL   
      * @param params 请求的参数集合    
      * @return 远程资源的响应结果
      */
     @SuppressWarnings ( "unused" )
     private String sendPost(String url, Map<String, String> params) {
         OutputStreamWriter out = null ;
         BufferedReader in = null ;       
         StringBuilder result = new StringBuilder();
         try {
             URL realUrl = new URL(url);
             HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();
             // 发送POST请求必须设置如下两行
             conn.setDoOutput( true );
             conn.setDoInput( true );
             // POST方法
             conn.setRequestMethod( "POST" );
             // 设置通用的请求属性
             conn.setRequestProperty( "accept" , "*/*" );
             conn.setRequestProperty( "connection" , "Keep-Alive" );
             conn.setRequestProperty( "user-agent" ,
                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)" );
             conn.setRequestProperty( "Content-Type" , "application/x-www-form-urlencoded" );
             conn.connect();
             // 获取URLConnection对象对应的输出流
             out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8" );
             // 发送请求参数           
             if (params != null ) {
                   StringBuilder param = new StringBuilder();
                   for (Map.Entry<String, String> entry : params.entrySet()) {
                       if (param.length()> 0 ){
                           param.append( "&" );
                       }              
                       param.append(entry.getKey());
                       param.append( "=" );
                       param.append(entry.getValue());                    
                       System.out.println(entry.getKey()+ ":" +entry.getValue());
                   }
                   System.out.println( "param:" +param.toString());
                   out.write(param.toString());
             }
             // flush输出流的缓冲
             out.flush();
             // 定义BufferedReader输入流来读取URL的响应
             in = new BufferedReader(
                     new InputStreamReader(conn.getInputStream(), "UTF-8" ));
             String line;
             while ((line = in.readLine()) != null ) {
                 result.append(line);
             }
         } catch (Exception e) {           
             e.printStackTrace();
         }
         //使用finally块来关闭输出流、输入流
         finally {
             try {
                 if (out!= null ){
                     out.close();
                 }
                 if (in!= null ){
                     in.close();
                 }
             }
             catch (IOException ex){
                 ex.printStackTrace();
             }
         }
         return result.toString();
     }
}

  

电商平台如何接入快递鸟电子面单API?相关推荐

  1. 电商ERP如何接入快递鸟电子面单API?

    快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...

  2. 电商平台对接第三方快递鸟物流轨迹查询api接口申请对接全流程

    电商平台对接第三方快递物流轨迹查询api接口申请对接全流程 快递鸟查询API接口是使用的物流单号即可实现查询物流信息.主要应用在电商商城.ERP系统商.WMS系统商.快递柜.银行等企业.多家快递物流公 ...

  3. 分享 | 快递鸟电子面单API参数接口

    电子面单API为用户提供电子面单下单服务,快递鸟连接多家物流公司,一次接入即可对接多家物流公司电子面单下单通道,为订单信息化.标准化提供保障服务.但是有很多朋友不知道快递鸟API接口的操作流程,今天就 ...

  4. PHP对接快递鸟电子面单

    电子面单API为用户提供电子面单下单服务,快递鸟连接多家物流公司,一次接入即可对接多家物流公司电子面单下单通道,为订单信息化.标准化提供保障服务.用户接通快递鸟电子面单API,即可直接下单顺丰.EMS ...

  5. 快递鸟电子面单批量打印接口用java怎么对接对接

    目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打印电子面 ...

  6. C#-快递鸟电子面单打印API

    以下是快递鸟电子面单接口对接demo (1).只支持Json格式.接口指令1007. (2).订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码. (3).接口支持:顺丰(SF ...

  7. 解析快递鸟电子面单返回报文 德邦电子面单模板预览效果

    快递鸟现在能支持所有常用快递公司电子面单打印,四通一达,顺丰,邮政等,大部分电商需要用到这个接口,在实际对接快递鸟电子面单的时候很多人都会有疑问:如何解析接口返回的一大段json字符串,使它呈现为我们 ...

  8. Coupang、Joom、Etsy、Newegg、Temu 和Ozon等电商平台如何快速增长销量(测评补单)

    电商业的竞争在不断加剧,对于在Coupang.Joom.Etsy.Newegg.Temu 和Ozon等电商平台上的商家来说,如何快速增长销量是一项挑战.今天,我们就来谈谈如何通过一些专业的策略来提升你 ...

  9. 获取各大电商平台、1688app上商品详情原数据API调用展示

    以下是行业内了解到的一些情况,本帖只展示部分代码,需要全部参数以及更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Rookie ...

最新文章

  1. 'libxml/tree.h' file not found
  2. .NET(C#)有哪些主流的ORM框架,FreeSql,SqlSugar,Dapper,EF还是...
  3. 跨工厂物料状态/特定工厂的物料状态
  4. Linux运行级详解
  5. 中科院院士:很多人没有真正理解科学研究的本质
  6. 在Ubuntu 16.04.3 LTS 和 Windows 下安装 Go 环境
  7. 楼天成夺Facebook黑客杯季军,已被Facebook录用得到美国绿卡
  8. 从2元钱到年赚20亿元的传奇经历!相信对你一定会有很大的启发!
  9. 【oracle】除数为0
  10. 百度VS谷歌:优秀与伟大之别
  11. OpenCV学习笔记(一):读取、显示、保存图片
  12. 高等代数——大学高等代数课程创新教材(丘维声)——3.7笔记+习题
  13. 【POI2012】SZA-Cloakroom
  14. ie8打不开mysql登录_Win7下IE8无法打开https类型的网站解决方法笔记
  15. ugui 转轮_Unity3D的FingerGesture插件
  16. Python 爬虫模拟器
  17. ASR6601牛羊定位器芯片GPS国内首颗支持LoRa的LPWAN SoC
  18. signature=da5bc91649d670f1b27f07ad681e7c71,Signature of HDM clustering at Planck angular scales
  19. 2018-2019(1)教学随笔
  20. 高数上册第七章小结笔记

热门文章

  1. 移动端安全框架:MobSF:概要与使用
  2. 拿什么拯救我的远程办公?
  3. oracle表关联为什么不走索引,Oracle执行计划不走索引的原因总结
  4. windows 8.1 下91手机助手解决方案
  5. word控件应用技巧:线上试卷制作小妙招
  6. 全球收入同比下降4.9%、面临证券欺诈诉讼,苹果CEO库克致歉投资者...
  7. 摩托罗拉ME525+ 变砖恢复记
  8. 第五章 太阳病纲要(1)
  9. Java苹果手机缩略图旋转_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...
  10. cartographer_ros node_main