电商网站接入快递查询

网页跳转格式

适用场景:在管理后台中,订单列表点击显示快递详情 和 订单详情页显示快递详情,使用 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"
        }
    ]
}
快递JSON接口返回数据

PHP后台查询物流信息返回JSON数组的处理类

<?php
namespace Home\Controller;
use Think\Controller;

//物流查询控制器
class ExpController extends Controller {
    
    //快递中英文对照数组
    //注意因为本身数据库中的快递名称可能并不统一,使用正则表达式来匹配,所以这里的名称要尽量简短
    //更多快递的对应参考快递100的对照文档 http://www.kuaidi100.com/openapi/api_post.shtml
    var $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);
        //转为array
        return 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);

 

posted @ 2015-11-05 16:45  北七星  阅读(1993)  评论(1编辑  收藏  举报
F**k me on Gitee