微信公众平台之快递查询功能用法实例
发布: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文件:
- <?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 (!emptyempty($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(!emptyempty($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();
Tags: php快递查询
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)