各种电子面单-api接口(顺丰快递鸟菜鸟)(代码片段)

独立开发者 独立开发者     2022-12-04     481

关键词:

文章目录

术语

对于一般人,电子面单的意思可能并不是很了解;说白了,就是快递员给你打印的快递单的电子版。

专业解释:

电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。
#电子面单样式

对接接口各家对比

  1. 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次。
  2. 菜鸟电子面单接口:可一次对接15家快递公司, 无需和每一家快递公司做对接。支持快递有四通一达、EMS、宅急送、德邦、优速、天天、快捷、全峰等15家常用快递公司,其中不包括顺丰
  3. 快递鸟电子面单接口:可一次对接15家快递公司, 无需和每一家快递公司做对接。支持快递有四通一达、顺丰、EMS、宅急送、德邦、优速等15家快递公司,对顺丰有电子面单服务需求的可以选择顺丰自有的电子面单或者是快递鸟电子面单

各家合作流程对比

  1. 快递电子面单接口
    a. 和多家快递公司申请账号
    b.分别进行接口对接
    c.电子面单服务用户向快递网点申请开通及确认合作细节

  2. 菜鸟电子面单
    a.向菜鸟网络提交对接申请
    b.和菜鸟进行接口对接
    c.电子面单服务用户向菜鸟申请账号
    d.电子面单服务用户向快递网点申请开通及确认合作细节

  3. 快递鸟电子面单
    a. 进入申请账号,获取专属的ID和KEY
    b.和快递鸟进行接口对接
    c.电子面单服务用户向快递网点申请开通及确认合作细节;当然,顺丰电子面单稍微特殊一点,即:顺丰接入快递鸟立马可以使用,无需注册账号。

接口定义及说明

由于,当前快递鸟支持的电子面单接口相对于其他家的有一定优势;所以以下主要以快递鸟为例进行展开阐述一一说明。

Request Params

Api接口:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx
请求方式:POST
编码:UTF-8

系统级参数(公共参数)

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

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

接口参数

参数名称类型说明是否必需
CallBackString用户自定义回调信息O
MemberIDString会员标识O
CustomerNameString电子面单客户账号(与快递网点申请)O
CustomerPwdString电子面单密码O
SendSiteString收件网点标识O
ShipperCodeString快递公司编码R
LogisticCodeString快递单号O
OrderCodeString订单编号R
MonthCodeString月结编码C
PayTypeInt邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付R
ExpTypeString快递类型:1-标准快件R
CostDouble寄件费(运费)O
OtherCostDouble其他费用O
StartDateString上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化,本文中所有时间格式相同O
EndDateString上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化,本文中所有时间格式相同O
WeightDouble物品总重量kgO
QuantityInt件数/包裹数O
VolumeDouble物品总体积m3O
RemarkString备注O
IsReturnPrintTemplateString返回电子面单模板:0-不需要;1-需要O
ReceiverCompanyString收件人公司O
NameString收件人R
TelString电话与手机,必填一个R
MobileString电话与手机,必填一个R
PostCodeString收件人邮编O
ProvinceNameString收件省(如广东省,不要缺少“省”)R
CityNameString收件市(如深圳市,不要缺少“市”)R
ExpAreaNameString收件区(如福田区,不要缺少“区”或“县”)O
AddressString收件人详细地址R
SenderCompanyString发件人公司O
NameString收件人R
TelString电话与手机,必填一个R
MobileString电话与手机,必填一个R
PostCodeString发件人邮编O
ProvinceNameString发件省(如广东省,不要缺少“省”)R
CityNameString发件市(如深圳市,不要缺少“市”)R
ExpAreaNameString发件区(如福田区,不要缺少“区”或“县”)O
AddressString发件人详细地址R
AddServices
AddServiceNameString增值服务名称O
ValueString增值服务值O
CustomerIDString客户标识(选填)O
Commoditys
CommodityGoodsNameString商品名称R
GoodsCodeString商品编码O
GoodsquantityString商品数量O
GoodsPriceString商品价格O
GoodsWeightString商品重量kgO
GoodsDescString商品描述O
GoodsVolString商品体积m3O

Response Params

参数名称类型说明是否必需
EBusinessIDString用户IDR
SuccessBool成功与否R
ResultCodeString错误编码R
ReasonString失败原因O
UniquerRequestNumberString唯一标识R
PrintTemplateString面单打印模板O
EstimatedDeliveryTimeString订单预计到货时间yyyy-mm-ddO
CallbackString用户自定义回调信息O
OrderOrderCodeString订单编号R
ShipperCodeString快递公司编码R
LogisticCodeString快递单号R
MarkDestinationString大头笔O
OriginCodeString始发地区域编码O
OriginNameString始发地/始发网点O
DestinatioCodeString目的地区域编码O
DestinatioNameString目的地/到达网点O
SortingCodeString分拣编码O
PackageCodeString集包编码O

Java栗子

注:此栗子仅供参考,如要使用请到官方下载对应语言的Demo即可。

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接口,请转到快递鸟具体查看相关文档。

同类文章

各种快递查询Api接口(快递鸟)

电商适用电子面单接口对接案例

电子面单接口现在有快递公司、菜鸟和快递鸟提供快递公司是一家家合作,要接口文档,逐一对接菜鸟和快递鸟是电子面单接口集成方,能打印多家快递电子面单,菜鸟目前支持15家,快递鸟支持20家,基本上都是常用的快递,... 查看详情

电子面单api接口_java调用示例

  电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。&nb... 查看详情

关于快递鸟的顺丰电子面单打印(代码片段)

1.form表单传递数据,到控制器,之后的复制操作1顺丰信息2//快递信息3$eorder=[];4$eorder["ShipperCode"]=$express_number[$number];//快递公司编码5$eorder["OrderCode"]=$ship_order_data[‘ship_order_number‘];//发货单编号()67$eorder["PayType"]=3;// 查看详情

常用电子面单接口对接技术文档

 一.电子面单接口类型及定义1.快递电子面单接口:快递公司自己开发的电子面单服务,商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次。2.菜鸟电子面单接口:可一次对接15家快递公司,无需和每一家... 查看详情

电子面单批量打印接口对接(含打印控件)

...打单工具、ERP系统、WEB端、APP移动端等企业发货量较大,电子面单打印接口的需求也日益增加,现在给大家做一下梳理和使用方法介绍。目前支持批量打印电子面单的有快递鸟、菜鸟和快递公司。但是快递公司仅能打印本公司的... 查看详情

查快递,对接哪个接口比较好?

...达、百世、天天、EMS这些都支持,外国的快递也能查询;电子面单接口支持20+快递公司的面单打印,可以自动回填单号,提高商家的发货效率;B端寄件接口支持的快递公司多,价格也实惠。快递100提供技术文 查看详情

快递---快递鸟的电子面单取消操作-----------

...快递数据,这边由于业务需求,有可能会对已取号的快递电子面单做出处理为此自己东拉西扯总算完善了接口当然详细的明细还得各位有使用的朋友,自己去查看所提供的api----------------------------------------------------------仅限数据... 查看详情

各种电子面单_api接口

  电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。&nb... 查看详情

免费圆通电子面单接口对接

  电子面单接口是快递鸟提供给独立电商、仓储管理系统、物流供应链等物流系统平台使用的下单接口,满足客户在线发货需求并提供打印面单的服务,客户通过网络选择物流公司发送请求通知贵公司有快递要发货,把数... 查看详情

圆通电子面单接口对接及调试

  电子面单接口是快递鸟提供给独立电商、仓储管理系统、物流供应链等物流系统平台使用的下单接口,满足客户在线发货需求并提供打印面单的服务,客户通过网络选择物流公司发送请求通知贵公司有快递要发货,把数... 查看详情

快递鸟电子面单打印功能基于java

之前的后天管理系统的电子面单打印使用的是灵通打单。使用相对比较麻烦,需要到处Excel之后再导入,麻烦。快递鸟有电子面单api,后台系统直接对接很是方便,不过也遇到了好些问题。不难是不难,但是遇到的坑着实是不少... 查看详情

各种快递查询api接口(快递鸟)(代码片段)

文章目录#应用场景#申请Key#快递查询Api接口#前提项目开发中,有些需求难免会用到关于快递的一些Api接口;本篇主要介绍的是快递的查询Api及与其他各家的不同之处;常用的提供快递Api接口的有:快递鸟快递100爱查快... 查看详情

智选物流-api接口平台(淘宝菜鸟快递鸟)

...快递网点地址库精准数据,点对点的运输时间,各种行业包裹的所有快递价格逻辑,不同产品类型、支付方式等分析,实现不同仓库,灵活使用低成本、高质量的快递方案。智选物流通过联合快递 查看详情

求快递查询api,想接入一个到自己网站上?

...号可以用快递.哥软件查询物流,如果你是用这个软件打电子面单,寄件记录里面会有物流查询,你可以随时查看物流信息的 查看详情

电子面单打印模板规格汇总以及使用指南

...1.4,订购一个免费套餐1.5,准备打印机、打印纸打印机:???电子面单模板对打印机品牌、型号等没有要求,只要是热敏打印机即可,常见品牌如:斑马、得力、快麦、汉印、佳博等。???打印机可由快递网点提供或者在淘宝京东上购... 查看详情

快递鸟打印电子面单数据验证不通过,非法参数

下载官方的批量打印面单Demo,修改成自己ID和Key后运行一直报错,提示“数据验证不通过,非法参数”等,   弄了半天没弄出个所以然,想了下应该是加密的问题,调试了下发现GetIp()获取到的ip地址既不是本机... 查看详情

谈顺丰与菜鸟的数据断交事件

...sp;事件的现象6/1日凌晨,顺丰突然宣布关闭对菜鸟的数据接口。截至中午,顺丰已经停止给所有淘宝平台上的包裹回传物流信息。顺丰暂停数据接口后,淘宝上顺丰包裹的物流详情无法正常回传,商家无法确定买家是否已经收货... 查看详情

快递公司面单纸张标准

菜鸟标准100mm*180mm天天/全峰/快捷100mm*180mmE邮宝长100mm*150mmE邮宝短100mm*100mm优速/宅急送100mm*150mm优速标准100mm*180mm菜鸟申通/圆通100mm*180mm菜鸟汇通/韵达100mm*180mm邮政物流100mm*180mm邮政小包100mm*150mm韵达标准100mm*203mm韵达小包100mm*180mm... 查看详情