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

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 15:03:32 浏览: 评论:0 

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

使用方法:

#查快递(或三个首字母ckd)#快递编号#快递单号

如(查询EMS单号为1034616494006的快递):

#ckd#15#1034616494006

常用快递编号:

15EMS,56申通,57顺丰,77圆通,

80韵达,87中通,85宅急送,62天天

1. class.base.php文件:

  1. <?php 
  2. /** 
  3.  * 微信公众平台基础类 For Fshare 
  4.  * @author: Skiychan 
  5.  * @created:  2013.11.19 
  6.  */ 
  7. class Wechat{ 
  8. // public $token = ''; 
  9. /* public function __construct($token){ 
  10.   $this->token = $token; 
  11.  }  */ 
  12.  //判断是否来自微信服务器 
  13. /* public function valid(){ 
  14.   $echoStr = $_GET["echostr"]; 
  15.   if($this->checkSignature()){ 
  16.    echo $echoStr; 
  17.    exit; 
  18.   } 
  19.  } 
  20. */ 
  21.  public function responseMsg(){ 
  22.   $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  23.   if (!emptyempty($postStr)){ 
  24.    $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  25.    $fromUsername = $postObj->FromUserName; 
  26.    $toUsername = $postObj->ToUserName; 
  27.    $keyword = trim($postObj->Content); 
  28.    $time = time(); 
  29.    $textTpl = "<xml> 
  30.       <ToUserName><![CDATA[%s]]></ToUserName> 
  31.       <FromUserName><![CDATA[%s]]></FromUserName> 
  32.       <CreateTime>%s</CreateTime> 
  33.       <MsgType><![CDATA[%s]]></MsgType> 
  34.       <Content><![CDATA[%s]]></Content> 
  35.       <FuncFlag>0</FuncFlag> 
  36.       </xml>";     
  37.    if(!emptyempty($keyword)){ 
  38.     //当输入文字类型 
  39.     if($msgType = "text"){ 
  40.      //$contentStr = $keyword.$fromUsername.$time; 
  41.      //$preg = "/^\#([\W\w]*?)\#([\W\w]*?)\#(.*)/"; //0为功能,1为选项,2为余下的值 
  42.      //$preg = "/\#([\w]+)/"; //0为功能,1为选项,2为余下的值 
  43.      $preg = "/\#([\w\d\x{4e00}-\x{9fa5}]+)/u"//0为功能,1为选项,2为余下的值 
  44.      preg_match_all($preg,$keyword,$newdata); 
  45.      $fn_name = $newdata[1][0]; 
  46.      //获取快递的参数 
  47.      if(strtolower($fn_name)=="skiy"){ 
  48.       $me = "我是此公众帐号的开发者,英文名Skiy。\n如果你对本功能有任何意见和建议,欢迎联系我,\n我的QQ是1005043848\n微信是forskiy,邮箱:\ndeveloper@zzzzy.com"
  49.       $contentStr = $me
  50.      }       
  51.      //获取快递的参数 
  52.      if($fn_name=="快递"||strtolower($fn_name)=="kuaidi"){ 
  53.       $kdlist = ''
  54.       //启用PDO连接sqlite的方式 
  55.       $db = new PDO("sqlite:somedata/data.dat"); 
  56.       $results = $db->query('SELECT * FROM kuaidi')->fetchAll(); 
  57.       foreach ($results as $key=>$row) { 
  58.        //var_dump($row); 
  59.        //$list_one = $row['id']." ".$row['code']." ".$row['company']."\n"; 
  60.        $list_one = $row['id'].' '.$row['company']."\n"
  61.        $kdlist = $kdlist.$list_one
  62.       }   
  63.       //主机支持sqlite3的方式 
  64. /*      $db = new SQLite3("somedata/data.dat"); 
  65.       $results = $db->query('SELECT * FROM kuaidi'); 
  66.       while ($row = $results->fetchArray()) { 
  67.        //var_dump($row); 
  68.        $list_one = $row['id']." ".$row['code']." ".$row['company']."\n\r"; 
  69.        $kdlist = $kdlist.$list_one; 
  70.       }  */  
  71.       $contentStr = $kdlist
  72.      } 
  73.      if($fn_name=="查快递"||strtolower($fn_name)=="ckd"){ 
  74.       $id = $newdata[1][1]; 
  75.       $num = $newdata[1][2]; 
  76.       $db = new PDO("sqlite:somedata/data.dat"); 
  77.       $results = $db->query('SELECT code,company FROM kuaidi WHERE id = '.$id)->fetchAll(); 
  78.       $code = $results[0]['code'];  //获取英文代码 
  79.       $com = $results[0]['company'];  //获取公司名称 
  80.       $numinfo = "快递:".$com."\n"."单号:".$num."\n"
  81.       $kd_url = "http://m.kuaidi100.com/query?type=".$code."&postid=".$num
  82.       $json_getdata = file_get_contents($kd_url); 
  83.       $get_kdinfo = json_decode($json_getdata);  //object 
  84.       $get_kdinfo = json_decode($json_getdata,true); //array 
  85.       $last_t = "查询时间:\n".$get_kdinfo['updatetime']."\n\n";  //查询时间 
  86.       $kd_shipinfo = $get_kdinfo['data']; //快递数据数组 
  87.       $kd_total = count($kd_shipinfo)-1; 
  88.       $ship = ''
  89.       //物流倒序详情 
  90.       for($i = $kd_total;$i>=0;$i--){ 
  91.        $shipinfo = $kd_shipinfo[$i]['time']."\n".$kd_shipinfo[$i]['context']."\n"
  92.        $ship = $shipinfo.$ship
  93.       } 
  94.       //顺序物流详情 
  95.       /*foreach ($kd_shipinfo as $v){ 
  96.        $shipinfo = $v['time']."\n".$v['context']."\n"; 
  97.        $ship = $shipinfo.$ship; 
  98.       } 
  99.       */ 
  100.       $get_kdinfo = $numinfo.$last_t."【物流详情】\n".$ship
  101.       if($ship){ 
  102.        $contentStr = $get_kdinfo
  103.       }else
  104.        $contentStr = $numinfo.">没有物流数据!"
  105.       } 
  106.      } 
  107.      $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr); 
  108.      echo $resultStr
  109.     }else
  110.      echo "Input something..."
  111.     } 
  112.    } 
  113.   }else { 
  114.    echo "You have no enter something..."
  115.    exit
  116.   } 
  117.  } 
  118.  //判断签名,返回bool 
  119.  private function checkSignature(){ 
  120.   $signature = $_GET["signature"]; 
  121.   $timestamp = $_GET["timestamp"]; 
  122.   $nonce = $_GET["nonce"];  
  123.   $token = TOKEN; 
  124.   $tmpArr = array($token$timestamp$nonce); 
  125.   sort($tmpArr); 
  126.   $tmpStr = implode( $tmpArr ); 
  127.   $tmpStr = sha1( $tmpStr ); 
  128.   if$tmpStr == $signature ){ 
  129.    return true; 
  130.   }else
  131.    return false; 
  132.   } 
  133.  } 

2. index.php文件:

  1. <?php 
  2. /** 
  3.  *  
  4.  * 微信公众平台消息接口 For Fshare(分享资讯) 
  5.  * @author: Skiychan (Wechat:forskiy) 
  6.  * @created:2013.11.19 
  7.  *  
  8.  */ 
  9. include_once 'class.base.php'
  10. define('TOKEN''skiychan'); 
  11. $wx = new Wechat(); 
  12. //$wx->valid(); 
  13. $wx->responseMsg();

Tags: php快递查询

分享到: