微信公众平台之快递查询功能用法实例

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

使用方法:

#查快递(或三个首字母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。n如果你对本功能有任何意见和建议,欢迎联系我,n我的QQ是1005043848n微信是forskiy,邮箱:ndeveloper@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']."n";         $list_one = $row['id'].' '.$row['company']."n";         $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']."nr";         $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."n"."单号:".$num."n";        $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 = "查询时间:n".$get_kdinfo['updatetime']."nn";  //查询时间        $kd_shipinfo = $get_kdinfo['data']; //快递数据数组        $kd_total = count($kd_shipinfo)-1;        $ship = '';        //物流倒序详情        for($i = $kd_total;$i>=0;$i--){         $shipinfo = $kd_shipinfo[$i]['time']."n".$kd_shipinfo[$i]['context']."n";         $ship = $shipinfo.$ship;        }        //顺序物流详情        /*foreach ($kd_shipinfo as $v){         $shipinfo = $v['time']."n".$v['context']."n";         $ship = $shipinfo.$ship;        }        */        $get_kdinfo = $numinfo.$last_t."【物流详情】n".$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程序设计有所帮助。

微信公众平台之快递查询功能用法实例

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服

发表评论

登录后才能评论