<?php namespace App\Common\Service; /** * * 快递鸟订阅推送2.0接口 * * @技术QQ群: 340378554 * @see: http://kdniao.com/api-follow * @copyright: 深圳市快金数据技术服务有限公司 * * ID和Key请到官网申请:http://kdniao.com/reg */ //电商ID defined('EBusinessID') or define('EBusinessID', '你的电商ID); //电商加密私钥,快递鸟提供,注意保管,不要泄漏 defined('AppKey') or define('AppKey', '电商加密秘钥'); //测试请求url defined('ReqURL') or define('ReqURL', 'http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx');
//直接使用的是正式的 不知道为什么使用测试的url一直报错就直接使用的是正式的 class KdApi{ /** * Json方式 查询订单物流轨迹
*/
//参数分别为快递单号和 快递公司编码 https://wenku.baidu.com/view/762a97fecc7931b764ce1547.html https://wenku.baidu.com/view/762a97fecc7931b764ce1547.html public function getOrderTracesByJson($ShipperCode,$LogisticCode){ $requestData= "{'OrderCode':'','ShipperCode':'$ShipperCode','LogisticCode':'$LogisticCode'}"; $datas = array( 'EBusinessID' => EBusinessID, 'RequestType' => '1002', 'RequestData' => urlencode($requestData) , 'DataType' => '2', ); $datas['DataSign'] = $this->encrypt($requestData, AppKey); $result=$this->sendPost(ReqURL, $datas); $result = json_decode($result); if($result->Success){ if($result->State==0){ $msg = '暂无轨迹信息'; }else if($result->State==2){ $msg = '在途中'; }else if($result->State==3){ $msg = '已签收'; }else if($result->State==4){ $msg = '问题件'; } }else{ $msg = '获取失败'; } $data['state'] = isset($result->State)?$result->State:6; $data['msg']= $msg; $data['Traces'] = isset($result->Traces)?$result->Traces:''; return $data; } /** * post提交数据 * @param string $url 请求Url * @param array $datas 提交的数据 * @return url响应返回的html */ public 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签名 */ public function encrypt($data, $appkey) { return urlencode(base64_encode(md5($data.$appkey))); } } 从快递鸟下载的DEMO https://www.kuaidi100.com/openapi/api_post.shtml