(物流管理)快递鸟物流接口技术文档
快递单号查询自动识别接口API技术文档

快递单号查询自动识别接口API
快递鸟
版本
1功能说明
通过运单单号自动识别所属的快递公司。
同一个单号可能属于一家或者多家公司,快递鸟提供的服务为智能识别可能的快递公司,识别结果还需用户审核。
接口说明如下:
该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。
接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订阅的动作。
接口识别会返回一家或者多家快递公司,返回的数据根据快递鸟大数据分析结果排序,排名靠前的命中率更高。
若识别失败,快递鸟返回的匹配结果为空。
2接口规则
(1)、接口只支持Json格式参数,接口指令2002。
只支持POST请求方式,utf-8编码。
(2)、支持增值服务,保价、代收货款、货款直退、货款垫付等。
(3)、测试地址:
:8081/Ebusiness/EbusinessOrderHandle.aspx
(4)、正式地址:/Ebusiness/EbusinessOrderHandle.aspx
3系统级输入参数
4应用级输入参数
5返回结果参数。
智选物流-API接口平台(淘宝菜鸟、快递鸟)

智选物流-API接口平台(淘宝菜鸟、快递鸟)介绍
智选物流是综合地址库+时效库+逻辑库(成本、订单属性、仓库)选择出最优快递,通过多家快递网点地址库精准数据,点对点的运输时间,各种行业包裹的所有快递价格逻辑,不同产品类型、支付方式等分析,实现不同仓库,灵活使用低成本、高质量的快递方案。
智选物流通过联合快递与物流公司,驱动快递公司系统升级,提升服务能力,帮助商家提升物流服务。
支持智选物流公司
公司
1.菜鸟
2.快递鸟
区别
1.菜鸟只服务于自家平台淘宝和天猫,快递鸟主要服务于淘系外的平台
2.菜鸟以后台功能的形式开通,快递鸟以接口的形式接入
3.菜鸟智选物流是面向商家的统一数据化“物流”运营平台,快递鸟智选物
流服务基于快递鸟大数据平台的智能分析服务,以接口形式对接
智选物流支持的功能
上面,已经对菜鸟与快递鸟的智选物流做了简单的介绍及对比。
下面,主要将以快递鸟的智选物流为基础进行接口及功能的展开。
支持的功能:
1.能否到件查询
2.最优物流公司选择(时效预测、价格判断)
3.物流数据监控(物流路由推送、物流状态解析、异常件提醒)智选物流接口定义
接口规则
接口申请地址见快递鸟(申请后可立即对接)
请求方式:POST
数据格式:JSON
数据编码:UTF-8
持增值服务,保价、代收货款、货款直退、货款垫付等
系统级请求参数
其他Api接口,请转到快递鸟具体查看相关文档。
快递鸟物流查询插件

快递鸟物流查询插件声明:本插件无须修改何数据库、不影响系统升级,可以安全地进行卸载。
插件介绍本插是php通用版本,适用php5.2及以上版本。
一、安装办法第1步:申请授权KEY本插件采用快递鸟提供的免费快递查询API,所以请到快递鸟网站申请授权Key 。
第2步:录入授权Key(1)拿到授权KEY后,用记事本、写字板或EditPlus等文本编辑工具,打开插件\plugins\kdniao下的kdniao_config.php 文件。
(2)找到define('EBusinessID', '******'),将其中的******替换成您的商户ID,例如:define('EBusinessID', '123456');(示例)找到define('AppKey', '*******'),将其中的******替换成您的授权KEY,例如:define('AppKey', '23y87hraadf');(示例)特别提醒:输入商户ID和KEY的时候请仔细检查,前后都不要留空格、换行等!(3)在程序后台配置物流公司下的公司名称一致(4)修改后,保存退出,即完成授权KEY的输入工作。
第3步:上传插件(1)上传前,建议先将您的程序备份。
所需要备份的文件如下:plugins<DIR>|- kdniao|- kdniao_config.php|- kdniao_post.php|- jquery.min.js|- kdniao.js|- skin|- kdniao.css|- bg.png(2)用FTP将plugins文件夹上传到您的网站的根目录下,即可安装成功。
最终效果:固定位置浮动二、代码程序的改动1、找到需要添加查询的页面引用以下代码<script type="text/javascript" src="/plugins/kdniao/jquery.min.js"></script><script type="text/javascript" src="/plugins/kdniao/kdniao.js"></script>2、在需要展示物流查询的地方添加以下代码<div id="queryContext" class="flo"></div>其中class="flo"代表浮动,如果去掉的话则在固定位置显示。
快递物流寄件下单api接口调用对接

快递物流寄件下单api接口调用对接为了让你对接更简单,我会分享源代码,把源码复制到你的项目上,就能快速完成电商售后退货快递寄件下单预约快递员上门取件接口对接,调用快递鸟提供的上门取件API标准接口,成功调用后,快递员会准时上门取件,同时支持快递单号物流轨迹查询,快递鸟物流单号查询api接口不区分开发语言,支持Java,C#,PHP,Python,ObjectC等开发语言的程序调用。
1 接口规范说明1.1 接口规范及说明1.1.1 报文及报文编码报文格式:Json格式请求方法的编码格式(utf-8):交互协议上统一用UTF-8,避免传递中文数据出现乱码。
1.1.2 接口数据包结构图例- 数据包结构(系统级{数据})1.1.3 JSON示例1.1.4 系统级参数*快递所有接口统一使用此系统级参数,根据不同的请求接口指令接入不同的接口。
1.1.5 流程示意图1.1.6 名词定义1.2 签名说明1.2.1 关于签名快递鸟和第三方电子商务公司系统进行对接,有一定的安全机制。
采用IP认证加签名的方式对接,具体方案如下:1. 防止数据被篡改2. 注:DataSign生成后,对方接收到数据后,以同样的算法进行签名(推送接口RequestType为101/102不需要进行URL编码),生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生数据篡改。
2.调用接口的身份认证注册成为快递鸟用户后,会生成对应的用户ID和APIKey,用户ID相当于用户名,APIKey相当于密码。
举例:1.假设2.那么DataSign签名的内容为3.接收方收到数据后,获得EBusinessID 和RequestData和DataSign等这几个数据。
4.接收方对EBusinessID得到APIKey,RequestData+APIKey的数据进行md5和base64后的内容就为OWFhM2I5N2ViM2U2MGRkMjc4YzU2NmVlZWI3ZDk0MmE=5.接收方判断签名后的数据跟传递过来的DataSign是否一致,如果一致进行业务操作,如果不一致返回错误。
php快递鸟单号查询api接口免费对接调用

php快递鸟单号查询api接⼝免费对接调⽤快递鸟集成快递单号查询API接⼝,可以同时对接顺丰快递查询,中通、申通、圆通、韵达、百世、EMS等国内外418家物流快递公司接⼝查询等。
这些快递物流企业,提供了快递单号⾃动识别接⼝,快递单号查询接⼝等快递物流服务。
对于电商企业,ERP服务企业,集成此接⼝到⾃⼰的软件中,增加了企业的竞争⼒。
⼀、接⼝应⽤场景1.在电商平台购物后,通过购物订单跟踪物流时,调⽤此API获取物流信息详情2.处理运费对账时,⼀键获取运单物流状态3.批量跟踪及获取运单物流信息对接流程快递鸟⽹站申请接⼝KEY并认证-对接接⼝-调试-上线使⽤三、技术对接快递鸟提供的快递查询接⼝,⽀持418家快递物流查询,涵盖了国内外主流快递服务企业的单号查询,信息及时,数据完整。
登录快递鸟官⽹⽀持多种开发语⾔对接,包括JAVA,C#,PHP等。
根据您的开发语⾔,选择参考对应的代码⽰例,下⾯以PHP代码为例:<?php//电商IDdefined('EBusinessID') or define('EBusinessID', '123456');//电商加密私钥,快递鸟提供,注意保管,不要泄漏defined('AppKey') or define('AppKey', '1234567890');//请求url:测试地址//defined('ReqURL') or define('ReqURL', ':8080/kdniaosandbox/gateway/exterfaceInvoke.json');//请求url:正式地址defined('ReqURL') or define('ReqURL', '/Ebusiness/EbusinessOrderHandle.aspx');$kgs = "JD";//快递公司简称,官⽅有⽂档$number = "12345678";//快递单号//调⽤查询物流轨迹//---------------------------------------------$logisticResult=getOrderTracesByJson($kgs,$number);echo$logisticResult;//解析数据$data = json_decode($logisticResult,true);if($data['Success'] == true){//返回信息成功$str = "";if(isset($data['Traces']) && !empty($data['Traces'])){for($i=0;$i<count($data['Traces']);$i++){$str .= "时间:".$data['Traces'][$i]['AcceptTime']."<br/>地址:".$data['Traces'][$i]['AcceptStation']."<br/>";}}echo "您查询的单号是:".$data['LogisticCode']."<br/>物流信息:<br/>".$str."";}//---------------------------------------------/*** Json⽅式查询订单物流轨迹*/function getOrderTracesByJson($kgs,$number){$requestData= "{'OrderCode':'','ShipperCode':'$kgs','LogisticCode':'$number'}";$datas = array('EBusinessID' => EBusinessID,'RequestType' => '1002','RequestData' => urlencode($requestData) ,'DataType' => '2',);$datas['DataSign'] = encrypt($requestData, AppKey);$result=sendPost(ReqURL, $datas);//根据公司业务处理返回的信息......return$result;}/*** post提交数据* @param string $url 请求Url* @param array $datas 提交的数据* @return url响应返回的html*/function sendPost($url, $datas) {$temps = array();foreach ($datas as$key => $value) {$temps[] = sprintf('%s=%s', $key, $value);}$post_data = implode('&', $temps);$url_info = parse_url($url);if(empty($url_info['port'])){$url_info['port']=80;}$httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n"; $httpheader.= "Host:" . $url_info['host'] . "\r\n";$httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n"; $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n"; $httpheader.= "Connection:close\r\n\r\n";$httpheader.= $post_data;$fd = fsockopen($url_info['host'], $url_info['port']);fwrite($fd, $httpheader);$gets = "";$headerFlag = true;while (!feof($fd)) {if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {break;}}while (!feof($fd)) {$gets.= fread($fd, 128);}fclose($fd);return$gets;}/*** 电商Sign签名⽣成* @param data 内容* @param appkey Appkey* @return DataSign签名*/function encrypt($data, $appkey) {return urlencode(base64_encode(md5($data.$appkey)));}>。
快递鸟智能物流查询API

byte[] buffer =System.Text.Encoding.GetEncoding(charset).GetBytes(str);
try
{
System.Security.Cryptography.MD5CryptoServiceProvider check;
check = new System.Security.Cryptography.MD5CryptoServiceProvider();
return result;
}
/// <summary>
/// Post方式提交数据,返回网页的源代码
/// </summary>
/// <paramname="url">发送请求的 URL</param>
/// <paramname="param">请求的参数集合</param>
/// <returns>远程资源的响应结果</returns>
///电商Sign签名
///</summary>
///<paramname="content">内容</param>
///<paramname="keyValue">Appkey</param>
///<paramname="charset">URL编码 </param>
///<returns>DataSign签名</returns>
private string encrypt(String content, StringkeyValue, Stringcharset)
快递鸟丰网速运快递查询接口源码_快递鸟单号查询API

快递鸟丰⽹速运快递查询接⼝源码_快递鸟单号查询API看完快递鸟api顺丰丰⽹速运快递对接教程这篇⽂章,然后把源码复制到你的项⽬上,就能快速完成丰⽹速运快递接⼝对接.更适合刚⼊门的菜鸟,调⽤快递鸟的丰⽹速运快递快递查询API接⼝,能查询到快递单号从收件、运输,到转运中⼼,派送到签收等各个环节的物流发货状态。
快递鸟api接⼝不区分开发语⾔,⽀持Java,C#,PHP,Python,ObjectC等开发语⾔的程序调⽤。
编码⽤顺丰编码即可查询(SF),下⾯具体讲解实现过程.1.完成前期准备⼯作1.1,去快递鸟官⽹免费注册⼀个账号1.2,免费获得⼀个apiKey(接⼝权限验证需要)1.3,完成实名认证流程1.4,订购⼀个免费套餐2.API接⼝2.3,请求⽅式:POST2.4,编码格式(utf-8):application/x-www-form-urlencoded;charset=utf-82.5,返回类型:JSON2.6,调试页⾯:2.7,调试⼯具:去调试(使⽤快递鸟账号登录)3.请求参数(Headers)4.请求参数(Body)6.请求完整报⽂(⽰例)RequestData=%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27JTSD%27%2c%27LogisticCode%27%3a%27jt0000052600488%27%7d&EBusinessID=1264783&RequestType=1002&DataSign=MTYyMDU4NWQ2NmU1ZDI2MDEzNGE5YmVlM2YxYzEzMTM%3d&DataType=27.成功返回报⽂(⽰例){"LogisticCode": "SF0000052600488","ShipperCode": "SF","Traces": [{"AcceptStation": "【芜湖市】【芜湖镜湖⽹点】的邓拥军 178********已取件","AcceptTime": "2020-03-16 16:26:13"},{"AcceptStation": "【芜湖市】【芜湖镜湖⽹点】的邓拥军 178********已取件","AcceptTime": "2020-03-16 16:41:33"},{"AcceptStation": "【芜湖市】【芜湖镜湖⽹点】已收件","AcceptTime": "2020-03-16 17:39:21"},{"AcceptStation": "【芜湖市】快件离开【芜湖镜湖⽹点】已发往【芜湖转运中⼼】","AcceptTime": "2020-03-16 17:40:27"},{"AcceptStation": "【芜湖市】快件到达【芜湖转运中⼼】","AcceptTime": "2020-03-16 19:36:32"},{"AcceptStation": "【芜湖市】快件离开【芜湖转运中⼼】已发往【合肥转运中⼼】","AcceptTime": "2020-03-16 20:47:03"},{"AcceptStation": "【合肥市】快件到达【合肥转运中⼼】","AcceptTime": "2020-03-16 23:40:10"},{"AcceptStation": "【合肥市】快件离开【合肥转运中⼼】已发往【⼴州花都转运中⼼】","AcceptTime": "2020-03-17 00:10:48"},{"AcceptStation": "【⼴州市】快件到达【⼴州花都转运中⼼】","AcceptTime": "2020-03-17 20:45:00"},{"AcceptStation": "【⼴州市】快件离开【⼴州花都转运中⼼】已发往【深圳宝安转运中⼼】","AcceptTime": "2020-03-18 00:17:55"},{"AcceptStation": "【深圳市】快件到达【深圳宝安转运中⼼】","AcceptTime": "2020-03-18 03:00:17"},{"AcceptStation": "【深圳市】快件离开【深圳宝安转运中⼼】已发往【深圳福⽥⽹点】","AcceptTime": "2020-03-18 04:44:39"},{"AcceptStation": "【深圳市】【深圳福⽥⽹点】的邹俊林 176********正在派件","AcceptTime": "2020-03-18 08:10:09"},{"AcceptStation": "【深圳市】【深圳福⽥⽹点】的赵凯 159********正在派件","AcceptTime": "2020-03-18 09:55:19"},{"AcceptStation": "【深圳市】快件已签收,签收⼈是【代收】,如有疑问请联系:159********,期待再次为您服务", "AcceptTime": "2020-03-18 14:53:54"}],"State": "3","EBusinessID": "1264783","Success": true}8.失败返回报⽂(⽰例){"LogisticCode": "SF0000052600488","ShipperCode": "SF","Traces": [],"State": "0","EBusinessID": "1264783","Reason": "业务错误[没有可⽤套餐]","Success": false}说明:未实名认证,未订购套餐,套餐可⽤查询量已经⽤完都会返回此报⽂信息9.⽆轨迹返回报⽂(⽰例){"LogisticCode": "SF0000052600488","ShipperCode": "SF","Traces": [],"State": "0","EBusinessID": "1264783","Reason": "暂⽆轨迹信息","Success": true}10.分步讲解(C#版本)10.1,请求数据包结构10.2,C#调⽤代码⽰例//电商IDstring eEBusinessID = "test1617571";//电商加密私钥,快递鸟提供,注意保管,不要泄漏string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175";//请求urlstring reqURL = ":8080/kdniaosandbox/gateway/exterfaceInvoke.json";//请求指令string reqType="1002";//2-jsonstring dataType = "2";//字符编码采⽤UTF-8string charset = "UTF-8";//JSON字符串stringstring jsonStr = "{"OrderCode":"","ShipperCode":"SF","LogisticCode":"SF0000052600488"}" ;//把(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的⽅法就能获取到⾥⾯的字段信息。
快递鸟API查询快递接口

1.申请一个快递鸟的帐号获取授权申请/reg快递鸟的帐号使永久免费的,且申请了立即就能用的,也不需要审核。
2.按照单号识别接口和即时查询接口封装好数据3.获取返回的 json 数据输出import jsonimport urllibimport urllib.requestimport hashlibimport base64import urllib.parse# 此处为快递鸟官网申请的帐号和密码APP_id = "1266271"APP_key = "7526a46e-3a2a-4f5b-8659-d72f361e3386"def encrypt(origin_data, appkey):"""数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码""" m = hashlib.md5()m.update((origin_data+appkey).encode("utf8"))encodestr = m.hexdigest()base64_text = base64.b64encode(encodestr.encode(encoding='utf-8'))return base64_textdef sendpost(url, datas):"""发送post请求"""postdata = urllib.parse.urlencode(datas).encode('utf-8')header = {"Accept": "application/x-www-form-urlencoded;charset=utf-8","Accept-Encoding": "utf-8"}req = urllib.request.Request(url, postdata, header)get_data = (urllib.request.urlopen(req).read().decode('utf-8'))return get_datadef get_company(logistic_code, appid, appkey, url):"""获取对应快递单号的快递公司代码和名称"""data1 = {'LogisticCode': logistic_code}d1 = json.dumps(data1, sort_keys=True)requestdata = encrypt(d1, appkey)post_data = {'RequestData': d1,'EBusinessID': appid,'RequestType': '2002','DataType': '2','DataSign': requestdata.decode()}json_data = sendpost(url, post_data)sort_data = json.loads(json_data)return sort_datadef get_traces(logistic_code, shipper_code, appid, appkey, url):"""查询接口支持按照运单号查询(单个查询)"""data1 = {'LogisticCode': logistic_code, 'ShipperCode': shipper_code}d1 = json.dumps(data1, sort_keys=True)requestdata = encrypt(d1, appkey)post_data = {'RequestData': d1, 'EBusinessID': appid, 'RequestType': '1002', 'DataType': '2','DataSign': requestdata.decode()}json_data = sendpost(url, post_data)sort_data = json.loads(json_data)return sort_datadef recognise(expresscode):"""输出数据"""url = ':8081/Ebusiness/EbusinessOrderHandle.aspx' data = get_company(expresscode, APP_id, APP_key, url)if not any(data['Shippers']):print("未查到该快递信息,请检查快递单号是否有误!")else:print("已查到该", str(data['Shippers'][0]['ShipperName'])+"("+str(data['Shippers'][0]['ShipperCode'])+")", expresscode)trace_data = get_traces(expresscode, data['Shippers'][0]['ShipperCode'], APP_id, APP_key, url)if trace_data['Success'] == "false" or not any(trace_data['Traces']): print("未查询到该快递物流轨迹!")else:str_state = "问题件"if trace_data['State'] == '2':str_state = "在途中"if trace_data['State'] == '3':str_state = "已签收"print("目前状态: "+str_state)trace_data = trace_data['Traces']item_no = 1for item in trace_data:print(str(item_no)+":", item['AcceptTime'],item['AcceptStation'])item_no += 1print("\n")returnwhile True:code = input("请输入快递单号(Esc退出):")code = code.strip()if code == "esc":breakrecognise(code)【疑问解答】1、问题:快递鸟接口有并发要求吗?快递鸟即时查询接口并发不超过10次/秒,物流跟踪接口订阅不超过30次/秒,电子面单接口下单不超过20次/秒。