• PHP 之快递100接口封装


    <?php
    /**
     * Created by PhpStorm.
     * User: Yang
     * Date: 2019/8/23
     * Time: 10:38
     */
    
    class Kuaidi_Query
    {
        private $_query_url = 'http://poll.kuaidi100.com/poll/query.do';    //实时查询请求地址
    //    private $_url = 'http://www.kuaidi100.com/autonumber/auto?num=906919164534&key=IobfFnLz2751';    //实时查询请求地址
        private $_auto_url = 'http://www.kuaidi100.com/autonumber/auto';    //实时查询请求地址
        private $_key = "";
        private $_customer = "";
        private $_params = array();
    
        public function __construct($num, $com = '', $phone = '', $from = '', $to = '', $resultv2 = 1)
        {
            if (empty($com)) {
                //归属公司智能判断
                $com = $this->check($num);
            }
            $params = array(
                'com' => $com,                    //快递公司编码
                'num' => $num,                    //快递单号
                'phone' => $phone,                //手机号
                'from' => $from,                //出发地城市
                'to' => $to,                    //目的地城市
                'resultv2' => $resultv2        //开启行政区域解析
            );
            $this->_params = $params;
        }
    
        /**
         * 单号归属公司智能判断接口
         * @param $num
         * @return mixed
         */
        public function check($num)
        {
            $url = $this->_auto_url."?num=".$num."&key=".$this->_key;
            $data = $this->get_curl($url);
            $data_array = json_decode($data, true);
            return $data_array[0]['comCode'];
        }
    
        /**
         * 执行快递查询接口
         * @return mixed
         */
        public function Query()
        {
            $post_data = array();
            $post_data["customer"] = $this->_customer;
            $post_data["param"] = json_encode($this->_params);
            $sign = md5($post_data["param"] . $this->_key . $post_data["customer"]);
            $post_data["sign"] = strtoupper($sign);
            $params = "";
            foreach ($post_data as $k => $v) {
                $params .= "$k=" . urlencode($v) . "&";        //默认UTF-8编码格式
            }
            $post_data = substr($params, 0, -1);
            $query_data = $this->post_curl($this->_query_url, $post_data);
            return $query_data;
        }
    
        /**
         * get 请求
         * @param $url
         * @return mixed
         */
        public function get_curl($url) {
            $ch = curl_init();//初始化
            curl_setopt($ch, CURLOPT_URL, $url);//访问的URL
            curl_setopt($ch, CURLOPT_HEADER, false);//设置不需要头信息
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//只获取页面内容,但不输出
            $result = curl_exec($ch);//执行请求
            curl_close($ch);//关闭curl,释放资源
            $data = str_replace(""", '"', $result);
            return $result;
        }
    
        /**
         * post 请求
         * @param $post_data
         * @return mixed
         */
        public function post_curl($url, $post_data)
        {
            //发送post请求
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($ch);
            $data = str_replace(""", '"', $result);
            $data = json_decode($data, true);
            return $data;
        }
    }

     使用方式:

    <?php
    /**
     * Created by PhpStorm.
     * User: Yang
     * Date: 2019/8/23
     * Time: 11:03
     */
    
    include "../../Kuaidi_Query.php";
    
    $k = new Kuaidi_Query(3950055201640);
    $data = $k->Query();
    if ($data['message'] == "ok") {
        $list = $data['data'];
        var_dump($list);
    }else{
        var_dump($data['message']);
    }

    结果展示:

    array(11) {
      [0]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-23 13:21:54"
        ["context"]=>
        string(115) "【武汉市】 已签收 : 由董雨昂(金龙·四季阳光 )代签收,如有问题联系董雨昂(13147108459)"
        ["ftime"]=>
        string(19) "2019-03-23 13:21:54"
        ["areaCode"]=>
        NULL
        ["areaName"]=>
        NULL
        ["status"]=>
        string(6) "签收"
      }
      [1]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-23 09:13:51"
        ["context"]=>
        string(106) "【武汉市】 湖北武汉黄陂区公司杨园分部 派件员 董雨昂(13147108459)正在为您派送"
        ["ftime"]=>
        string(19) "2019-03-23 09:13:51"
        ["areaCode"]=>
        string(14) "CN420116000000"
        ["areaName"]=>
        string(26) "湖北,武汉市,黄陂区"
        ["status"]=>
        string(6) "派件"
      }
      [2]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-23 06:55:27"
        ["context"]=>
        string(113) "【武汉市】 已离开 湖北武汉黄陂区公司 发往 湖北武汉黄陂区公司杨园分部(15391528386)"
        ["ftime"]=>
        string(19) "2019-03-23 06:55:27"
        ["areaCode"]=>
        NULL
        ["areaName"]=>
        NULL
        ["status"]=>
        string(6) "在途"
      }
      [3]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-23 06:52:47"
        ["context"]=>
        string(72) "【武汉市】 已到达 湖北武汉黄陂区公司 马上为您派送"
        ["ftime"]=>
        string(19) "2019-03-23 06:52:47"
        ["areaCode"]=>
        string(14) "CN420116000000"
        ["areaName"]=>
        string(26) "湖北,武汉市,黄陂区"
        ["status"]=>
        string(6) "派件"
      }
      [4]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-22 20:30:30"
        ["context"]=>
        string(50) "【武汉市】 已到达 湖北武汉分拨中心"
        ["ftime"]=>
        string(19) "2019-03-22 20:30:30"
        ["areaCode"]=>
        string(14) "CN420100000000"
        ["areaName"]=>
        string(16) "湖北,武汉市"
        ["status"]=>
        string(6) "在途"
      }
      [5]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-22 20:30:27"
        ["context"]=>
        string(85) "【武汉市】 已离开 湖北武汉分拨中心 发往 湖北武汉黄陂区公司"
        ["ftime"]=>
        string(19) "2019-03-22 20:30:27"
        ["areaCode"]=>
        NULL
        ["areaName"]=>
        NULL
        ["status"]=>
        string(6) "在途"
      }
      [6]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-22 20:15:30"
        ["context"]=>
        string(50) "【武汉市】 已到达 湖北武汉分拨中心"
        ["ftime"]=>
        string(19) "2019-03-22 20:15:30"
        ["areaCode"]=>
        string(14) "CN420100000000"
        ["areaName"]=>
        string(16) "湖北,武汉市"
        ["status"]=>
        string(6) "在途"
      }
      [7]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-22 00:48:37"
        ["context"]=>
        string(82) "【汕头市】 已离开 广东揭阳分拨中心 发往 湖北武汉分拨中心"
        ["ftime"]=>
        string(19) "2019-03-22 00:48:37"
        ["areaCode"]=>
        NULL
        ["areaName"]=>
        NULL
        ["status"]=>
        string(6) "在途"
      }
      [8]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-22 00:46:46"
        ["context"]=>
        string(50) "【汕头市】 已到达 广东揭阳分拨中心"
        ["ftime"]=>
        string(19) "2019-03-22 00:46:46"
        ["areaCode"]=>
        string(14) "CN440500000000"
        ["areaName"]=>
        string(16) "广东,汕头市"
        ["status"]=>
        string(6) "在途"
      }
      [9]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-21 20:32:50"
        ["context"]=>
        string(94) "【汕头市】 已离开 广东汕头潮阳区公司陈店分部 发往 湖北武汉网点包"
        ["ftime"]=>
        string(19) "2019-03-21 20:32:50"
        ["areaCode"]=>
        NULL
        ["areaName"]=>
        NULL
        ["status"]=>
        string(6) "在途"
      }
      [10]=>
      array(6) {
        ["time"]=>
        string(19) "2019-03-21 19:05:50"
        ["context"]=>
        string(65) "【汕头市】 广东汕头潮阳区公司陈店分部 已揽收"
        ["ftime"]=>
        string(19) "2019-03-21 19:05:50"
        ["areaCode"]=>
        string(14) "CN440513000000"
        ["areaName"]=>
        string(26) "广东,汕头市,潮阳区"
        ["status"]=>
        string(6) "揽收"
      }
    }
  • 相关阅读:
    springboot+websocket 归纳收集
    flask-admin 快速打造博客 系列一
    Flask-sqlalchemy 语法总结
    python 小问题收集
    pyenv+virtual 笔记
    flask_admin 笔记七 扩展功能
    Flask_admin 笔记六 modelView的内置方法
    spring boot 项目中 maven打第三方lib包时遇到的问题以及解决方法
    java 字符串压缩长度并解压
    highcharts中放aqi及6要素,再加上气象5要素的图
  • 原文地址:https://www.cnblogs.com/yang-2018/p/11399391.html
Copyright © 2020-2023  润新知