• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP开发实现快递查询功能详解

    背景:不久前,设计实现了京东api的功能,发现如果换了其它快递再重新设计,岂不是会浪费太多的时间,所以选个第三方提供的快递API是最为合理的,下面给出快递鸟和快递100的设计实现。

    一.快递鸟

    I.快递鸟api实现物流即时查询

    1.首先要有一个快递鸟账号,根据对方的要求,完善用户申请。

    2.根据自己的需求,开通服务

    3.进入“我的API接口”,根据“接口”中的开发文档了解设计需求,下载官方demo,编辑为适合自己的代码。

    II.“即时查询”代码实现

    1.修改官方的demo代码,我在此分离出了一个快递类,提高适用性

    2.引入类文件,实例化并进行测试

    (注意:引用此api时,明确除传入物流单号参数外,还需要“快递公司编码”,可点击下载后存入自己设计平台的数据库,发现一点,excel表中没有京东物流却可以使用“JD”查到,估计是表格更新不够即时性)

    3.输出效果

    二.快递100设计实现

    1.实例化操作类,测试代码

    include_once 'Express.php';
    $waybillCode = 'VA33016759650';
    $express = new Express();
    $res = $express->expressinfo($waybillCode);
    $trace = $res['data'];
    var_dump($trace);

    (注意:此处只需传入一个快递单号即可,相比前面的快递鸟api而言,更为智能)

    2.测试得到的数据

    3.界面简单设计效果如下,仅做参考

    4.补充参考代码,匹配显示常用物流公司(2017-1-19

    显然,需要按照获取到的物流信息中的“com”与快递100提供的编码进行对应,然后发现,只有word文档,如果有excel表,那就方便录入数据库了...

    更新后的Express.class.php 代码如下:

    ?php
    /**
     * Express.class.php 快递查询类 v1.0
     *
     * @copyright    百鬼夜行
     * @lastmodify    2017-01-19
     */
    class Express
    {
      //根据快递单号查询物流信息函数
      public function expressinfo($order){
        header('Content-Type:text/html; charset=utf-8');
        $result = $this -> getorder($order);
        $express = $this->traceExpress();
        foreach ($express as $key => $value){
          if ($result['com'] == $key){
            $result['comName'] = $value;
            break;
          }else{
            $result['comName'] = '暂无匹配';
          }
        }
        return $result;
      }
    
      //快递100物流公司
      public function traceExpress(){
        $express = array(
          'aae' => 'aae全球专递',
          'anjie' => '安捷快递',
          'anxindakuaixi' => '安信达快递',
          'biaojikuaidi' => '彪记快递',
          'datianwuliu' => '大田物流',
          'debangwuliu' => '德邦物流',
          'ems' => 'ems快递',
          'guotongkuaidi' => '国通快递',
          'huitongkuaidi' => '汇通快运',
          'jixianda' => '急先达',
          'kuaijiesudi' => '快捷速递',
          'quanfengkuaidi' => '全峰快递',
          'rufengda' => '如风达',
          'shentong' => '申通',
          'shunfeng' => '顺丰',
          'tiantian' => '天天快递',
          'xinfengwuliu' => '信丰物流',
          'yibangwuliu' => '一邦速递',
          'yuantong' => '圆通速递',
          'yunda' => '韵达快运',
          'zhaijisong' => '宅急送',
          'zhongtong' => '中通速递',
          'jd' => '京东快递'
        );
        return $express;
      }
    
      /*
       * 网页内容获取方法
      */
      private function getcontent($url)
      {
        if (function_exists("file_get_contents")) {
          $file_contents = file_get_contents($url);
        } else {
          $ch   = curl_init();
          $timeout = 5;
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
          $file_contents = curl_exec($ch);
          curl_close($ch);
        }
        return $file_contents;
      }
    
      /*
       * 获取对应名称和对应传值的方法
      */
      private function expressname($order)
      {
        $name  = json_decode($this->getcontent("http://www.kuaidi100.com/autonumber/auto?num={$order}"), true);
        $result = $name[0]['comCode'];
        if (empty($result)) {
          return false;
        } else {
          return $result;
        }
      }
    
      /*
       * 返回$data array   快递数组查询失败返回false
       * @param $order    快递的单号
       * $data['ischeck'] ==1 已经签收
       * $data['data']    快递实时查询的状态 array
      */
      public function getorder($order)
      {
        $keywords = $this->expressname($order);
        if (!$keywords) {
          return false;
        } else {
          $result = $this->getcontent("http://www.kuaidi100.com/query?type={$keywords}postid={$order}");
          $data  = json_decode($result, true);
          return $data;
        }
      }
    }
    

    附录源代码>>>

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》及《PHP中json格式数据操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php微信公众号开发之快递查询
    • PHP查询快递信息的方法
    • php快递单号查询接口使用示例
    • php调用快递鸟接口实例代码
    • PHP调用全国天气预报数据接口查询天气示例
    • php版淘宝网查询商品接口代码示例
    • 免费手机号码归属地API查询接口和PHP使用实例分享
    • php利用新浪接口查询ip获取地理位置示例
    • PHP手机号码归属地查询代码(API接口/mysql)
    • PHP实现手机归属地查询API接口实现代码
    上一篇:PHP+mysql防止SQL注入的方法小结
    下一篇:PHP7引入的??和?:的区别讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP开发实现快递查询功能详解 PHP,开发,实现,快递,查询功能,