前言
顺丰斥资 1000 万成立深圳丰网速运有限公司。其中,顺丰速运出资 800 万,持股 80%,中金出资 200 万,持股 20%。
据悉,该公司成立工夫为 2020 年 4 月 7 日,法人代表为吴国忠,杨尊淼、李祥乐任董事,马立军任监事。
经营范围包含:国内货运代理;经济技术咨询;技术信息征询;以特许经营方式从事商业活动;经营进出口业务;机械设备租赁;汽车租赁;屋宇租赁业务;商务服务、商务代理;过境货物运输代理;3C 产品检测、维修服务。许可经营项目是:国内、国内快递;国内供应链;一般货运;货物专用运输,大型物件运输;仓储服务。
接下来给大家解说一下如何对接丰网速运的快递查问接口。
调用快递鸟的丰网速运查问 API 接口,能查问到丰网速运单号从收件、运输,到转运核心,派送到签收等各个环节的物流发货状态。快递鸟 api 接口不辨别开发语言,反对 Java,C#,PHP,Python,ObjectC 等开发语言的程序调用。上面具体解说实现过程.
目录
1. 实现后期筹备工作
2.API 接口
3. 申请参数(Headers)
4. 申请参数(Body)
5. 返回参数(Return)
6. 申请残缺报文(示例)
7. 胜利返回报文(示例)
8. 失败返回报文(示例)
9. 无轨迹返回报文(示例)
10. 分步解说(C# 版本)
11. 顺丰快递查问接口利用成果
12. 对于签名
13. 返回码定义
1. 实现后期筹备工作
1.1, 去快递鸟官网收费注册一个账号
1.2, 收费取得一个 apiKey(接口权限验证须要)
1.3, 实现实名认证流程
1.4, 订购一个收费套餐
2.API 接口
2.1, 测试调用地址:http://sandboxapi.kdniao.com:…
2.2, 正式调用地址:http://api.kdniao.com/api/dist
2.3, 申请形式:POST
2.4, 编码格局(utf-8):application/x-www-form-urlencoded;charset=utf-8
2.5, 返回类型:JSON
2.6, 调试页面:http://kdniao.com/UserCenter/…
2.7, 调试工具:去调试(应用快递鸟账号登录)
3. 申请参数(Headers)
参数名称 类型 阐明 必须要求
RequestData String 申请内容需进行 URL(utf-8) 编码, 申请内容 JSON 格局,须和 DataType 统一 必填
EBusinessID String 用户 ID,查看用户 ID 和 ApiKey 必填
RequestType String 申请指令类型:1002 必填
DataSign String 签名数据,(Body+ApiKey)进行 MD5 加密,再进行 Base64 编码,最初进行 URL(utf-8)编码 必填
DataType String 求、返回数据类型:2-json,默认 Json 选填
4. 申请参数(Body)
参数名称 类型 阐明 必须要求
OrderCode String 订单编号 选填
ShipperCode String 快递公司编码,丰网速运:SF 必填
LogisticCode String 物流运单号 必填
5. 返回参数(Return)
参数名称 类型 阐明 必须要求
EBusinessID String 用户 ID 必填
ShipperCode String 快递公司编码 必填
LogisticCode String 物流运单号 选填
Success String 胜利与否 必填
Reason String 失败起因 选填
State String 物流状态:2- 在途中,3- 签收,4- 问题件 必填
Traces String 工夫
AcceptTime String 必填
AcceptStation String 形容 选填
Remark String 备注 必填
6. 申请残缺报文(示例)
RequestData=%0d%0a++++++++++++%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27SF%27%2c%27LogisticCode%27%3a%27295734066970%27%2c%27CustomerName
%27%3a%276073%27%7d%0d%0a++++++++&EBusinessID=1264783&RequestType=1002&DataSign=ZTJlZWU0NjI1YTljNTlmYzY5Y2M4YjMzYjcxYWU3MDA%3d&DataType=2
7. 胜利返回报文(示例)
复制代码
丰网速运单号 295734066970 的返回报文信息
{
“LogisticCode”: “295734066970”,
“ShipperCode”: “SF”,
“Traces”: [{
“AcceptStation”: “ 顺丰速运 已收取快件 ”,
“AcceptTime”: “2020-02-13 18:39:21”
}, {
“AcceptStation”: “ 快件在【衡水桃城区集收客户营业部】已装车, 筹备发往【石家庄高开集散中心】”,
“AcceptTime”: “2020-02-13 18:39:31”
}, {
“AcceptStation”: “ 快件已发车 ”,
“AcceptTime”: “2020-02-13 19:15:24”
}, {
“AcceptStation”: “ 快件达到【石家庄高开集散中心】”,
“AcceptTime”: “2020-02-14 04:27:00”
}, {
“AcceptStation”: “ 快件在【石家庄高开集散中心】已装车, 筹备发往【长沙星沙集散中心】”,
“AcceptTime”: “2020-02-14 08:36:14”
}, {
“AcceptStation”: “ 快件已发车 ”,
“AcceptTime”: “2020-02-14 18:34:31”
}, {
“AcceptStation”: “ 快件达到【长沙星沙集散中心】”,
“AcceptTime”: “2020-02-16 09:58:05”
}, {
“AcceptStation”: “ 快件在【长沙星沙集散中心】已装车, 筹备发往【怀化盈口集散点】”,
“AcceptTime”: “2020-02-16 11:03:53”
}, {
“AcceptStation”: “ 快件已发车 ”,
“AcceptTime”: “2020-02-16 11:50:35”
}, {
“AcceptStation”: “ 快件达到【怀化盈口集散点】”,
“AcceptTime”: “2020-02-16 20:20:42”
}, {
“AcceptStation”: “ 快件在【怀化盈口集散点】已装车, 筹备发往【沅陵县御鑫城营业点】”,
“AcceptTime”: “2020-02-17 05:33:23”
}, {
“AcceptStation”: “ 快件已发车 ”,
“AcceptTime”: “2020-02-17 05:33:37”
}, {
“AcceptStation”: “ 快件达到【沅陵县御鑫城营业点】”,
“AcceptTime”: “2020-02-17 07:55:20”
}, {
“AcceptStation”: “ 快件在【沅陵县御鑫城营业点】已装车, 筹备发往【怀化市沅陵县二酉苗族乡单干点】”,
“AcceptTime”: “2020-02-17 09:31:53”
}, {
“AcceptStation”: “ 快件达到【怀化市沅陵县二酉苗族乡单干点】”,
“AcceptTime”: “2020-02-17 09:32:16”
}, {
“AcceptStation”: “ 正在派送途中, 请您筹备签收(派件人: 邓小云, 电话:13298660182)”,
“AcceptTime”: “2020-02-17 09:32:31”
}, {
“AcceptStation”: “ 快件交给邓小云, 正在派送途中(联系电话:13298660182, 顺丰已开启“平安呼叫”爱护您的电话隐衷, 请释怀接听!)”,
“AcceptTime”: “2020-02-17 09:33:26”
}, {
“AcceptStation”: “ 已签收, 感激应用顺丰, 期待再次为您服务(主单总件数:1 件)”,
“AcceptTime”: “2020-02-17 22:41:24”
}, {
“AcceptStation”: “ 在官网 \” 运单材料 & 签收图 \”, 可查看签收人信息 ”,
“AcceptTime”: “2020-02-17 22:41:26”
}],
“State”: “3”,
“EBusinessID”: “1264783”,
“Success”: true
}
复制代码
8. 失败返回报文(示例)
复制代码
{
“LogisticCode”: “295734066970”,
“ShipperCode”: “SF”,
“Traces”: [],
“State”: “0”,
“EBusinessID”: “1264783”,
“Reason”: “ 业务谬误[没有可用套餐]”,
“Success”: false
}
复制代码
阐明:未实名认证,未订购套餐,套餐可用查问量曾经用完 都会返回此报文信息
去实名认证 / 理解套餐详情
9. 无轨迹返回报文(示例)
复制代码
{
“LogisticCode”: “295734066970”,
“ShipperCode”: “SF”,
“Traces”: [],
“State”: “0”,
“EBusinessID”: “1264783”,
“Reason”: “ 暂无轨迹信息 ”,
“Success”: true
}
复制代码
10. 分步解说(C# 版本)
10.1,申请数据包构造
在这里插入图片形容
10.2,C# 调用代码示例
// 电商 ID
string eEBusinessID = “test1617571”;
// 电商加密私钥,快递鸟提供,留神保存,不要透露
string appKey= “554343b2-7252-439b-b4eb-1af42c8f2175”;
// 申请 url
string reqURL = “http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json”;
// 申请指令
string reqType=”1002″;
//2-json
string dataType = “2”;
// 字符编码采纳 UTF-8
string charset = “UTF-8”;
//JSON 字符串 string
string jsonStr =
“{\”OrderCode\”:\”\”,\”ShipperCode\”:\”JTSD\”,\”LogisticCode\”:\”JT0000052600488\”}” ;
// 把(jsonStr+APIKey) 进行 MD5 加密
string md5Str=MD5(jsonStr + apiKey, charset);
// 把 md5Str 进行 Base64 编码
string base64Str=base64(md5Str,charset);
// 进行 URL 编码 (utf-8)
string datasign = HttpUtility.UrlEncode(base64Str, charset);
// 申请报文参数
string postStr = “RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr
&DataSign= datasign&DataType=dataType”;
// 通信协定应用 Http 协定 Post 申请形式 返回轨迹数据
string post = SendPost(reqURL, postStr);
// 获取到的 post 数据就是快递鸟返回的残缺报文,接下来本人写一个解析 json 的办法就能获取到外面的字段信息。
10.3,C# 调用办法
///<summary>
/// 字符串 MD5 加密
///</summary>
///<param name="str"> 要加密的字符串 </param>
///<param name="charset"> 编码方式 </param>
///<returns> 密文 </returns>
private string MD5(string str, string charset)
{byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
try
{
System.Security.Cryptography.MD5CryptoServiceProvider check;
check = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] somme = check.ComputeHash(buffer);
string ret = "";
foreach (byte a in somme)
{if (a < 16)
ret += "0" + a.ToString("X");
else
ret += a.ToString("X");
}
return ret.ToLower();}
catch
{throw;}
}
/// <summary>
/// base64 编码
/// </summary>
/// <param name="str"> 内容 </param>
/// <param name="charset"> 编码方式 </param>
/// <returns></returns>
private string base64(String str, String charset)
{return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
}
/// <summary>
/// Post 形式提交数据,返回网页的源代码
/// </summary>
/// <param name="url"> 发送申请的 URL</param>
/// <param name="postData"> 申请报文参数 </param>
/// <returns> 近程资源的响应后果 </returns>
private string SendPost(string url, string postData)
{
string result = "";
byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
try
{HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = url;
request.Accept = "*/*";
request.Timeout = 30 * 1000;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
request.Method = "POST";
request.ContentLength = byteData.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteData, 0, byteData.Length);
stream.Flush();
stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream backStream = response.GetResponseStream();
StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
result = sr.ReadToEnd();
sr.Close();
backStream.Close();
response.Close();
request.Abort();}
catch (Exception ex)
{result = ex.ToString();
}
return result;
}
11. 丰网速运查问接口利用
12. 对于签名
快递鸟和第三方电子商务公司零碎进行对接,有肯定的平安机制。采纳 IP 认证加签名
的形式对接,具体计划如下:
避免数据被篡改
在 POST 申请中会传递 5 个必须 (R) 参数
RequestData== 数据内容 (URL 编码:UTF-8)
EBusinessID== 用户 ID
RequestType= 申请指令类型
DataSign== 数据内容签名:把(申请内容(未编码)+ApiKey) 进行 MD5 加密,而后 Base64
编码,最初进行 URL(utf-8)编码
DataType==2(返回数据类型为 json)
注:
DataSign 生成后,对方接管到数据后,以同样的算法进行签名 (推送接口 RequestType 为
101/102 不须要进行 URL 编码),生成摘要,比照两者的摘要是否雷同,如果不同,阐明传递过程中产生数据篡改。
调用接口的身份认证
注册成为快递鸟用户后,会生成对应的用户 ID 和 APIKey,用户 ID 相当于用户名,
APIKey 相当于明码。
13. 返回码定义
编码 阐明
100 胜利
101 短少必要参数
102 校验问题
103 格局问题
去申请调用 API 接口