各种电子面单_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/ 打 ...
随机推荐
- bzoj 1778 [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元)
[题意] 炸弹从1开始运动,每次有P/Q的概率爆炸,否则等概率沿边移动,问在每个城市爆炸的概率. [思路] 设M表示移动一次后i->j的概率.Mk为移动k次后的概率,则有: Mk=M^k 设S= ...
- window.parent 判断是否是被嵌入iframe里面
项目中有个这样逻辑:B页面嵌套A页面 如图下: 但是B页面有可能独立出来.所以判断B页面是否被嵌入进去则使用 window.parent==window 如果是true B页面是独立的,false B ...
- 常用抓包指令for wireshark or tcpdump
1, tshark -ni eth0 -R "tcp.dstport eq 8080" [wireshark 抓指定协议端口数据包] 2, tcpdump -XvvennSs 0 ...
- 使用CocoaPods管理依赖库
本篇内容将介绍Mac和iOS开发中必备的一个依赖库管理工具CocoaPods. CocoaPods是什么 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest.AFN ...
- [iOS 多线程 & 网络 - 2.5] - 小文件上传
A.文件上传 思路: 发送文件数据给服务器 使用post请求 必须手动设置请求头: 内容大小Content-Length & 内容类型 Content-Type 请求体:文件数据 文件上传的格 ...
- Vue.js之初印象
一.背景 MVVM模式,很多人在说在用,好吧,我落后了,我目前的项目木有用到MVVM模式的框架,vuejs,reactjs,angularjs,nonono,自己去捣鼓过ng,项目木有用到.实在不敢称 ...
- SSL握手过程
原文地址: http://my.oschina.net/u/1188877/blog/164982 一.SSL握手有三个目的:1. 客户端与服务器需要就一组用于保护数据的算法达成一致:2. 它们需要确 ...
- ADO.NET 快速入门(三):从存储过程获取输出参数
一些存储过程通过参数返回值.当参数在SQL表达式或者存储过程中被定义为“输出”,参数值会返回给调用者.返回值存储在 OleDbCommand 或者 SqlCommand 对象的参数集合的参数里. ...
- java连接数据库的解决方法大全(mysql)
解决方法一:(最重要的一种方法) 你看下my.ini,有无 [mysql] default-character-set=utf8 [client] default-character-set=ut ...
- jsp页面用el表达式获取枚举的code
jsp页面用el表达式获取枚举的code <c:set var="D_BUSINESS" value="<%=DeptEnum.D_BUSINESS%> ...