网页跳转格式
适用场景:在管理后台中,订单列表点击显示快递详情 和 订单详情页显示快递详情,使用 iframe 嵌入该URL
http://www.kuaidi100.com/chaxun?com=快递名称(可以中文英文)&nu=快递单号
快递名称:可以为中文或英文
快递单号:大小写不敏感
手机页跳转格式
适用场景:手机页在订单详情页中点击物流详情栏时跳转
http://m.kuaidi100.com/index_all.html?type=快递名称(可以中文英文)&postid=快递单号&callbackurl=返回按钮的网址
快递名称:可以为中文或英文
快递单号:大小写不敏感
返回网址:以http://或https://开头的完整网址
手机页跳转2,但这个不含返回按钮,在苹果上无法返回 http://m.kuaidi100.com/result.jsp?nu=快递单号
JSON格式
适用场景:显示在用户或/和后台中的 订单列表页、订单详情页,类似于淘宝手机网页版中的订单详情页
http://www.kuaidi100.com/query?type=快递英文名&postid=快递单号
快递英文名:英文名称,参考对照表
快递单号:大小写不敏感
JSON返回信息示例
其中的参数 "ischeck":"1" 表示已经签收
{"message": "ok","nu": "100486292177","ischeck": "1","com": "yuantong","status": "200","condition": "F00","state": "3","data": [{"time": "2015-10-15 13:08:58","context": "客户 签收人: 邵雯雯 已签收 感谢使用圆通速递,期待再次为您服务","ftime": "2015-10-15 13:08:58"},{"time": "2015-10-15 10:16:16","context": "广东省广州市天平架公司(点击查询电话)周** 派件中 派件员电话18002211198","ftime": "2015-10-15 10:16:16"},{"time": "2015-10-15 08:23:10","context": "广东省广州市天平架公司 已收入","ftime": "2015-10-15 08:23:10"},{"time": "2015-10-15 05:15:00","context": "广州转运中心 已发出,下一站 广东省广州市天平架","ftime": "2015-10-15 05:15:00"},{"time": "2015-10-15 04:44:29","context": "广州转运中心 已收入","ftime": "2015-10-15 04:44:29"},{"time": "2015-10-14 23:33:08","context": "虎门转运中心 已发出,下一站 广州转运中心","ftime": "2015-10-14 23:33:08"},{"time": "2015-10-14 23:32:20","context": "虎门转运中心 已收入","ftime": "2015-10-14 23:32:20"},{"time": "2015-10-13 20:32:22","context": "泰州转运中心 已发出,下一站 虎门转运中心","ftime": "2015-10-13 20:32:22"},{"time": "2015-10-13 20:30:54","context": "泰州转运中心 已收入","ftime": "2015-10-13 20:30:54"},{"time": "2015-10-13 18:04:50","context": "江苏省扬州市公司 已发出,下一站 江苏省泰州市","ftime": "2015-10-13 18:04:50"},{"time": "2015-10-13 18:00:17","context": "江苏省扬州市公司 已打包","ftime": "2015-10-13 18:00:17"},{"time": "2015-10-13 17:58:27","context": "江苏省扬州市公司(点击查询电话) 已揽收","ftime": "2015-10-13 17:58:27"},{"time": "2015-10-13 15:44:59","context": "江苏省扬州市公司 取件人: 王莹莹 已收件","ftime": "2015-10-13 15:44:59"}] }
PHP后台查询物流信息返回JSON数组的处理类
<?php namespace Home\Controller; use Think\Controller;//物流查询控制器 class ExpController extends Controller {//快递中英文对照数组//注意因为本身数据库中的快递名称可能并不统一,使用正则表达式来匹配,所以这里的名称要尽量简短//更多快递的对应参考快递100的对照文档 http://www.kuaidi100.com/openapi/api_post.shtmlvar $expNameArr = array('圆通'=>'yuantong','申通'=>'shentong','中通'=>'zhongtong','顺丰'=>'shunfeng','韵达'=>'yunda','邮政'=>'ems','EMS'=>'ems','ems'=>'ems','天天'=>'tiantian','百世汇通'=>'huitongkuaidi','联昊通'=>'lianhaowuliu', );/*** 获得物流信息JSON* @param string $expName 快递名称:中文* @param string $expNum 快递单号:大小写不敏感 * @return array 快递100查询回来的信息JSON转换而成*/function getExpJSON($expName, $expNum){ //快递名匹配算法$expNameEn = '';foreach( $this->expNameArr as $key=>$val){ $pattern = '/'.$key.'/';if( preg_match($pattern, $expName) ){$expNameEn = $val;}} // var_dump($expNameEn); // $expNameEn = 'shentong'; // $expNum = '220494269655';//CURL方式获得JSON$url = 'http://www.kuaidi100.com/query?type='.$expNameEn.'&postid='.$expNum;$resStr = $this->curl_get_contents($url);//转为arrayreturn json_decode($resStr, TRUE);}/*** CURL方式获得内容:通用* @param string $url 网址
* @param int $timeout 超时时间(可选)* @return string 页面内容*/function curl_get_contents($url,$timeout=1) {$curlHandle = curl_init();curl_setopt( $curlHandle , CURLOPT_URL, $url );curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout );$result = curl_exec( $curlHandle );curl_close( $curlHandle );return $result;} }
伪造IP地址,绕过IP地址的次数限制(未测试),在curl_get_contents中插入如下代码,(可能有用可能没用)
$fakeIP = '211.'.rand(1,255).'.'.rand(1,255).'.'.rand(1,255); $header = ['CLIENT-IP:'.$fakeIP,'X-FORWARDED-FOR:'.$fakeIP, ]; curl_setopt( $curlHandle , CURLOPT_HTTPHEADER, $header);