微信公众平台之快递查询功能用法实例
本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:
使用方法:
#查快递(或三个首字母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程序设计有所帮助。