各种电子面单_Api接口
电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。
一.电子面单接口类型及定义
1.快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次。
2.菜鸟电子面单接口:可一次对接15家快递公司, 无需和每一家快递公司做对接。支持快递有四通一达、EMS、宅急送、德邦、优速、天天、快捷、全峰等15家常用快递公司,其中不包括顺丰。
3.快递鸟电子面单接口:可一次对接15家快递公司, 无需和每一家快递公司做对接。支持快递有四通一达、顺丰、EMS、宅急送、德邦、优速等15家快递公司,对顺丰有电子面单服务需求的可以选择顺丰自有的电子面单或者是快递鸟电子面单。
二.开通使用流程
1.快递电子面单
a. 和多家快递公司申请账号
b.分别进行接口对接
c.电子面单服务用户向快递网点申请开通及确认合作细节
2.菜鸟电子面单
a.向菜鸟提交对接申请
b.和菜鸟进行接口对接
c.电子面单服务用户向菜鸟申请账号
d.电子面单服务用户向快递网点申请开通及确认合作细节
3.快递鸟电子面单
a. 进入http://www.kdniao.com/reg申请账号,获取专属的ID和KEY
b.和快递鸟进行接口对接
c.电子面单服务用户向快递网点申请开通及确认合作细节
接口类型较多,以下先附上快递鸟电子面单接口调用方式,希望对大家有所帮助。后面将逐个对菜鸟电子面单、顺丰电子面单等接口调用方式做整理说明。
三.电子面单对接案例—快递鸟
1.接口描述
接口支持的消息接收方式:HTTP POST
请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"
API地址:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx
2.请求系统级参数
参数名称 | 类型 | 说明 | 必须要求 |
---|---|---|---|
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)。
3.接口参数
请求内容字段定义
参数名称 | 类型 | 说明 | 是否必须 | |
---|---|---|---|---|
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 | |
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 |
返回参数定义
参数名称 | 类型 | 说明 | 必须要求 | |
---|---|---|---|---|
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 |
4.JAVA对接源码
ID和KEY做了修改,如果需要测试请到快递鸟官网(http://www.kdniao.com)注册获取自己的ID和KEY。
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接口免费对接-快宝开放平台
1.什么是电子面单? 快递公司联合向商家提供的一种通过热敏纸打印输出纸质物流面单的物流服务,并且承载分单自动化算法等数据服务,是快递行业赋能的基础产品和服务. 2.电子面单长什么样? 各快递公司有自己 ...
- EMS电子面单接口对接使用-免费版
快递鸟电子面单接口,可一次对接15家快递公司, 无需和每一家快递公司做对接.支持快递有四通一达.顺丰.EMS.宅急送.德邦.优速等15家快递公司,对顺丰有电子面单服务需求的可以选择顺丰自有的电子面单或 ...
- 基于PHP的对接电子面单接口平台案例
电子面单接口目前有三种对接方式,快递电子面单接口.菜鸟电子面单接口和快递鸟电子面单接口.这三种接口各有特点. 一.电子面单接口定义 1. 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必 ...
- 基于PHP的对接免费电子面单接口平台的案例-快宝开放平台
一.电子面单对接平台 电子面单对接平台分为两类: 1 .各大快递公司自有的电子面单接口开放平台:对接起来麻烦,需要每个快递公司分别调试接口,费时费力. 2 .第三方快递开放平台:如快宝开放平台(htt ...
- 快递鸟顺丰电子面单接口API-JAVA
一.电子面单对接案例 1.接口描述 接口支持的消息接收方式:HTTP POST 请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;cha ...
- 快递鸟电子面单API对接方法?
之前说了一下快递公司.菜鸟和快递鸟的电子面单接口,很多人不知道快递鸟要怎么对接,现在为大家讲解一下.快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流 ...
- 电商平台如何接入快递鸟电子面单API?
快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...
- C#对接----韵达开发平台--取电子面单
引子 最近根据业务的一些需求,所以放弃从快递鸟对接去电子面单,转而直接对接韵达开发平台:http://open.yundasys.com/ ,中间踩了一些坑,借此做了一个小案例给大伙,瞅瞅,若有需改进 ...
- 通过快递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/ 打 ...
随机推荐
- [HIve - LanguageManual] Join Optimization (不懂)
Join Optimization Join Optimization Improvements to the Hive Optimizer Star Join Optimization Star S ...
- [Hive - LanguageManual] DML: Load, Insert, Update, Delete
LanguageManual DML Hive Data Manipulation Language Hive Data Manipulation Language Loading files int ...
- 在已创建的DataTable对象中添加在首列一列
问题描述: 从数据库读取出来的表数据赋给到了DataTable上,将DataTable中数据显示到DataGridView中时希望在DataGridView的第一列显示一列. 解决方法: DataTa ...
- 《Java数据结构与算法》笔记-CH2有序数组
/** * 上个例子是无序数组,并且没有考虑重复元素的情况. * 下面来设计一个有序数组,我们设定不允许重复,这样提高查找的速度,但是降低了插入操作的速度. * 1.线性查找 * 2.二分查找 * 有 ...
- SRM 502 DIV1 500pt(DP)
题目简述 给定比赛时间T和n个题目,你可以在任意时间提交题目,每个题目有一个初始分数maxPoints[i],每个单位时间题目的分数将会减少pointsPerMinute[i],即如果在时间t解决了第 ...
- 扩展KMP--求字符串S的所有后缀和字符串T的最长公共前缀
在解上面这个问题前我们要先解决一个类似的问题:求字符串s的所有后缀和s本身的最长公共前缀: 我们用next[]数组保存这些值: 现在我们假设要求next[ x ],并且next[ i ] 0<i ...
- 玩转轻巧型C/C++ IDE之C-Free(配置GCC、Visual C++、Borland C++编译器)
玩转轻巧型C/C++ IDE之C-Free(配置GCC.Visual C++.Borland C++编译器) 之前在写一点简单的C/C++代码时习惯了VC++6.0,但是由于在windows7下VC6 ...
- WebForm 回传后如何保持页面的滚动位置
转载自 http://www.cnblogs.com/renjuwht/archive/2009/06/17/1505000.html 默认情况下,ASP.NET页面回传到服务器后,页面会跳回顶部.对 ...
- HDU 2795 Billboard (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题目大意:有一块h*w的矩形广告板,要往上面贴广告; 然后给n个1*wi的广告,要求把广告贴 ...
- 设置mysql服务器远程连接
使用“Ctrl + R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口. 使用“mysql -uroot -proot”命令可以连接到本地的mysql服务. 使用“use mysql” ...