快递鸟查询API接口是使用的物流单号即可实现查询物流信息。主要应用在电商商城、ERP系统商、WMS系统商、快递柜、银行等企业。多家快递物流公司接口统一接入,建议对接接口提供商,一次性可以接入多家快递,在后期的技术维护也会省下很多工作。
快递鸟网站申请接口KEY并认证-对接接口-调试-上线使用
二、对接准备
2.获取开发者账号信息(ID ,API Key),登录快递鸟后台中查看
3.进行技术联调,并完成调试,物流查询api地址:http://www.kdniao.com/api-track
三、技术对接
快递鸟提供的快递查询接口,支持418家快递物流查询,涵盖了国内外主流快递服务企业的单号查询,信息及时,数据完整。
一.主动查询(即时查询API)
1)接口规则
a、查询接口支持按照运单号查询(单个查询,并发不超过10个/S)。
b、指定的物流运单号选择相应的快递公司编码,格式不对或则编码错误都会返失败的信息。如圆通快递物流单号应选择圆通快递公司编码(YTO)
c、返回的物流跟踪信息按照发生的时间升序排列。
d、接口指令1002。
e、请求地址:快递鸟
2)系统级和应用级输入参数系统级输入参数
http://www.kdniao.com/api-track
demo示例:
<?php //电商ID defined( 'EBusinessID' ) or define( 'EBusinessID' , '123456' ); //电商加密私钥,快递鸟提供,注意保管,不要泄漏 defined( 'AppKey' ) or define( 'AppKey' , '1234567890' ); //请求url:测试地址 //defined('ReqURL') or define('ReqURL', 'http://sandboxapi.kdniao.cc:8080/kdniaosandbox/gateway/exterfaceInvoke.json'); //请求url:正式地址 defined( 'ReqURL' ) or define( 'ReqURL' , 'http://api.kdniao.cc/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))); } ?> |