本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:
使用方法:
#查快递(或三个首字母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程序设计有所帮助。
本文地址:https://www.stayed.cn/item/26097
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我