zoukankan      html  css  js  c++  java
  • 电商网站接入快递查询

    网页跳转格式

    适用场景:在管理后台中,订单列表点击显示快递详情 和 订单详情页显示快递详情,使用 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 HomeController;
    use ThinkController;
    
    //物流查询控制器
    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);
  • 相关阅读:
    python之元组
    python之dict
    python之list
    python之str字符串
    python之for循环
    Python的基本语法2
    Python的基本语法1
    初识python
    JS获取当天是周几
    EXCLE导入数据库
  • 原文地址:https://www.cnblogs.com/batsing/p/4936883.html
Copyright © 2011-2022 走看看