微信公众平台之快递查询功能用法实例
本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:
使用方法:
#查快递(或三个首字母ckd)#快递编号#快递单号
如(查询EMS单号为1034616494006的快递):
#ckd#15#1034616494006
常用快递编号:<br/>
15EMS,56申通,57顺丰,77圆通,
80韵达,87中通,85宅急送,62天天
1.class.base.php文件:
<?php /** *微信公众平台基础类ForFshare *@author:Skiychan *@created:2013.11.19 */ classWechat{ //public$token=''; /*publicfunction__construct($token){ $this->token=$token; }*/ //判断是否来自微信服务器 /*publicfunctionvalid(){ $echoStr=$_GET["echostr"]; if($this->checkSignature()){ echo$echoStr; exit; } } */ publicfunctionresponseMsg(){ $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=newPDO("sqlite:somedata/data.dat"); $results=$db->query('SELECT*FROMkuaidi')->fetchAll(); foreach($resultsas$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=newSQLite3("somedata/data.dat"); $results=$db->query('SELECT*FROMkuaidi'); 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=newPDO("sqlite:somedata/data.dat"); $results=$db->query('SELECTcode,companyFROMkuaidiWHEREid='.$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_shipinfoas$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"Inputsomething..."; } } }else{ echo"Youhavenoentersomething..."; exit; } } //判断签名,返回bool privatefunctioncheckSignature(){ $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){ returntrue; }else{ returnfalse; } } }
2.index.php文件:
<?php /** * *微信公众平台消息接口ForFshare(分享资讯) *@author:Skiychan(Wechat:forskiy) *@created:2013.11.19 * */ include_once'class.base.php'; define('TOKEN','skiychan'); $wx=newWechat(); //$wx->valid(); $wx->responseMsg();
希望本文所述对大家的php程序设计有所帮助。