当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-15 21:33:40 浏览: 评论:0 

这篇文章主要介绍了PHP开发实现快递查询功能,结合实例形式分析了php使用快递鸟查询接口进行快递查询的相关实现步骤与操作技巧,需要的朋友可以参考下。

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

一.快递鸟

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

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

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

PHP快递查询

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

PHP快递查询

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

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

PHP快递查询

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

PHP快递查询

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

3.输出效果

PHP快递查询

二.快递100设计实现

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

  1. include_once 'Express.php'
  2. $waybillCode = 'VA33016759650'
  3. $express = new Express(); 
  4. $res = $express->expressinfo($waybillCode); 
  5. $trace = $res['data']; 
  6. var_dump($trace); 

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

2.测试得到的数据

PHP快递查询

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

PHP快递查询

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

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

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

  1. <?php 
  2. /** 
  3.  * Express.class.php 快递查询类 v1.0 
  4.  * 
  5.  * @copyright    百鬼夜行 
  6.  * @lastmodify    2017-01-19 
  7.  */ 
  8. class Express 
  9.   //根据快递单号查询物流信息函数 
  10.   public function expressinfo($order){ 
  11.     header('Content-Type:text/html; charset=utf-8'); 
  12.     $result = $this -> getorder($order); 
  13.     $express = $this->traceExpress(); 
  14.     foreach ($express as $key => $value){ 
  15.       if ($result['com'] == $key){ 
  16.         $result['comName'] = $value
  17.         break
  18.       }else
  19.         $result['comName'] = '暂无匹配'
  20.       } 
  21.     } 
  22.     return $result
  23.   } 
  24.  
  25.   //快递100物流公司 
  26.   public function traceExpress(){ 
  27.     $express = array
  28.       'aae' => 'aae全球专递'
  29.       'anjie' => '安捷快递'
  30.       'anxindakuaixi' => '安信达快递'
  31.       'biaojikuaidi' => '彪记快递'
  32.       'datianwuliu' => '大田物流'
  33.       'debangwuliu' => '德邦物流'
  34.       'ems' => 'ems快递'
  35.       'guotongkuaidi' => '国通快递'
  36.       'huitongkuaidi' => '汇通快运'
  37.       'jixianda' => '急先达'
  38.       'kuaijiesudi' => '快捷速递'
  39.       'quanfengkuaidi' => '全峰快递'
  40.       'rufengda' => '如风达'
  41.       'shentong' => '申通'
  42.       'shunfeng' => '顺丰'
  43.       'tiantian' => '天天快递'
  44.       'xinfengwuliu' => '信丰物流'
  45.       'yibangwuliu' => '一邦速递'
  46.       'yuantong' => '圆通速递'
  47.       'yunda' => '韵达快运'
  48.       'zhaijisong' => '宅急送'
  49.       'zhongtong' => '中通速递'
  50.       'jd' => '京东快递' 
  51.     ); 
  52.     return $express
  53.   } 
  54.  
  55.   /* 
  56.    * 网页内容获取方法 
  57.   */ 
  58.   private function getcontent($url
  59.   { 
  60.     if (function_exists("file_get_contents")) { 
  61.       $file_contents = file_get_contents($url); 
  62.     } else { 
  63.       $ch   = curl_init(); 
  64.       $timeout = 5; 
  65.       curl_setopt($ch, CURLOPT_URL, $url); 
  66.       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  67.       curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
  68.       $file_contents = curl_exec($ch); 
  69.       curl_close($ch); 
  70.     } 
  71.     return $file_contents
  72.   } 
  73.  
  74.   /* 
  75.    * 获取对应名称和对应传值的方法 
  76.   */ 
  77.   private function expressname($order
  78.   { 
  79.     $name  = json_decode($this->getcontent("http://www.kuaidi100.com/autonumber/auto?num={$order}"), true); 
  80.     $result = $name[0]['comCode']; 
  81.     if (emptyempty($result)) { 
  82.       return false; 
  83.     } else { 
  84.       return $result
  85.     } 
  86.   } 
  87.  
  88.   /* 
  89.    * 返回$data array   快递数组查询失败返回false 
  90.    * @param $order    快递的单号 
  91.    * $data['ischeck'] ==1 已经签收 
  92.    * $data['data']    快递实时查询的状态 array 
  93.   */ 
  94.   public function getorder($order
  95.   { 
  96.     $keywords = $this->expressname($order); 
  97.     if (!$keywords) { 
  98.       return false; 
  99.     } else { 
  100.       $result = $this->getcontent("http://www.kuaidi100.com/query?type={$keywords}&postid={$order}"); 
  101.       $data  = json_decode($result, true); 
  102.       return $data
  103.     } 
  104.   } 
  105. }

Tags: PHP快递查询

分享到: