• 技术文章 >后端开发 >php教程

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

    2016-07-13 09:57:21原创426

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


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

    使用方法:

    #查快递(或三个首字母ckd)#快递编号#快递单号
    如(查询EMS单号为1034616494006的快递):
    #ckd#15#1034616494006
    常用快递编号:

    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 = "
          
          
          %s
          
          
          0
          ";    
       if(!empty($keyword)){
        //当输入文字类型
        if($msgType = "text"){
         //$contentStr = $keyword.$fromUsername.$time;
         //$preg = "/^\#([\W\w]*?)\#([\W\w]*?)\#(.*)/"; //0为功能,1为选项,2为余下的值
         //$preg = "/\#([\w]+)/"; //0为功能,1为选项,2为余下的值
         $preg = "/\#([\w\d\x{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是1005043848\n微信是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']."\n\r";
           $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']."\n\n";  //查询时间
          $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程序设计有所帮助。

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/983998.htmlTechArticle微信公众平台之快递查询功能用法实例,公众实例 本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:微信公众平台 快递 查询
    上一篇:Yii 动作方法技巧_PHP教程 下一篇:php面试题:如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码。_PHP教程
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• php7.2怎么连接oracle数据库?OCI8扩展的安装• sql中执行没有关问题php中执行出错~ • 怎么组建这样的服务器 • 优化PHP代码的40条提议 • php filter 保险过滤函数
    1/1

    PHP中文网