微信公众平台之快递查询功能用法实例
author:一佰互联 2019-04-28   click:220

本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:

使用方法:

#查快递(或三个首字母ckd)#快递编号#快递单号如(查询EMS单号为1034616494006的快递):#ckd#15#1034616494006常用快递编号:<br />15EMS,56申通,57顺丰,77圆通,80韵达,87中通,85宅急送,62天天

1. class.base.php文件:

<?php/** * 微信公众平台基础类 For Fshare * @author: Skiychan * @created:  2013.11.19 */class Wechat{// public $token = "";/* public function __construct($token){  $this->token = $token; }  */ //判断是否来自微信服务器/* public function valid(){  $echoStr = $_GET["echostr"];  if($this->checkSignature()){   echo $echoStr;   exit;  } }*/ public function responseMsg(){  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  if (!empty($postStr)){   $postObj = simplexml_load_string($postStr, "SimpleXMLElement", LIBXML_NOCDATA);   $fromUsername = $postObj->FromUserName;   $toUsername = $postObj->ToUserName;   $keyword = trim($postObj->Content);   $time = time();   $textTpl = "<xml>      <ToUserName><![CDATA[%s]]></ToUserName>      <FromUserName><![CDATA[%s]]></FromUserName>      <CreateTime>%s</CreateTime>      <MsgType><![CDATA[%s]]></MsgType>      <Content><![CDATA[%s]]></Content>      <FuncFlag>0</FuncFlag>      </xml>";       if(!empty($keyword)){    //当输入文字类型    if($msgType = "text"){     //$contentStr = $keyword.$fromUsername.$time;     //$preg = "/^#([Ww]*?)#([Ww]*?)#(.*)/"; //0为功能,1为选项,2为余下的值     //$preg = "/#([w]+)/"; //0为功能,1为选项,2为余下的值     $preg = "/#([wdx{4e00}-x{9fa5}]+)/u"; //0为功能,1为选项,2为余下的值     preg_match_all($preg,$keyword,$newdata);     $fn_name = $newdata[1][0];     //获取快递的参数     if(strtolower($fn_name)=="skiy"){      $me = "我是此公众帐号的开发者,英文名Skiy。如果你对本功能有任何意见和建议,欢迎联系我,我的QQ是1005043848微信是forskiy,邮箱:developer@zzzzy.com";      $contentStr = $me;     }           //获取快递的参数     if($fn_name=="快递"||strtolower($fn_name)=="kuaidi"){      $kdlist = "";      //启用PDO连接sqlite的方式      $db = new PDO("sqlite:somedata/data.dat");      $results = $db->query("SELECT * FROM kuaidi")->fetchAll();      foreach ($results as $key=>$row) {       //var_dump($row);       //$list_one = $row["id"]." ".$row["code"]." ".$row["company"]."";       $list_one = $row["id"]." ".$row["company"]."";       $kdlist = $kdlist.$list_one;      }        //主机支持sqlite3的方式/*      $db = new SQLite3("somedata/data.dat");      $results = $db->query("SELECT * FROM kuaidi");      while ($row = $results->fetchArray()) {       //var_dump($row);       $list_one = $row["id"]." ".$row["code"]." ".$row["company"]."";       $kdlist = $kdlist.$list_one;      }  */        $contentStr = $kdlist;     }     if($fn_name=="查快递"||strtolower($fn_name)=="ckd"){      $id = $newdata[1][1];      $num = $newdata[1][2];      $db = new PDO("sqlite:somedata/data.dat");      $results = $db->query("SELECT code,company FROM kuaidi WHERE id = ".$id)->fetchAll();      $code = $results[0]["code"];  //获取英文代码      $com = $results[0]["company"];  //获取公司名称      $numinfo = "快递:".$com.""."单号:".$num."";      $kd_url = "http://m.kuaidi100.com/query?type=".$code."&postid=".$num;      $json_getdata = file_get_contents($kd_url);      $get_kdinfo = json_decode($json_getdata);  //object      $get_kdinfo = json_decode($json_getdata,true); //array      $last_t = "查询时间:".$get_kdinfo["updatetime"]."";  //查询时间      $kd_shipinfo = $get_kdinfo["data"]; //快递数据数组      $kd_total = count($kd_shipinfo)-1;      $ship = "";      //物流倒序详情      for($i = $kd_total;$i>=0;$i--){       $shipinfo = $kd_shipinfo[$i]["time"]."".$kd_shipinfo[$i]["context"]."";       $ship = $shipinfo.$ship;      }      //顺序物流详情      /*foreach ($kd_shipinfo as $v){       $shipinfo = $v["time"]."".$v["context"]."";       $ship = $shipinfo.$ship;      }      */      $get_kdinfo = $numinfo.$last_t."【物流详情】".$ship;      if($ship){       $contentStr = $get_kdinfo;      }else{       $contentStr = $numinfo.">没有物流数据!";      }     }     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);     echo $resultStr;    }else{     echo "Input something...";    }   }  }else {   echo "You have no enter something...";   exit;  } } //判断签名,返回bool private function checkSignature(){  $signature = $_GET["signature"];  $timestamp = $_GET["timestamp"];  $nonce = $_GET["nonce"];   $token = TOKEN;  $tmpArr = array($token, $timestamp, $nonce);  sort($tmpArr);  $tmpStr = implode( $tmpArr );  $tmpStr = sha1( $tmpStr );  if( $tmpStr == $signature ){   return true;  }else{   return false;  } }}

2. index.php文件:

<?php/** *  * 微信公众平台消息接口 For Fshare(分享资讯) * @author: Skiychan (Wechat:forskiy) * @created:2013.11.19 *  */include_once "class.base.php";define("TOKEN", "skiychan");$wx = new Wechat();//$wx->valid();$wx->responseMsg();

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