php教程

超轻量级php框架startmvc

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

更新时间:2020-03-03 22:19:45 作者:startmvc
本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:使

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

使用方法:

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

微信公众平台 快递查询