当前位置: 移动技术网 > IT编程>开发语言>PHP > 微信公众平台之快递查询功能用法实例

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

2018年06月24日  | 移动技术网IT编程  | 我要评论

广告业务员培训,真空装女模,创业学习网

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

使用方法:

#查快递(或三个首字母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 = "/^\#([\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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网