<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ // 获得参数signature nonce token timestamp $nonce = $_GET['nonce']; $token = 'family'; $timestamp = $_GET['timestamp']; $signature = $_GET['signature']; $echostr = $_GET['echostr']; $arr = array($nonce, $token, $timestamp); sort($arr); $tempstr = implode('', $arr); $tempstr = sha1($tempstr); if($tempstr == $signature && $echostr) { // 第一次接入微信API接口时验证,因为第一次有四个参数发送过来,其他情况下发送三个 echo $echostr; exit; }else { $this->responseMsg(); } } public function responseMsg() { // 获取微信推送过来的post数据(XML格式) $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; // 处理消息类型,并设置回复类型和内容 /*<xml> <ToUserName><![CDATA[toUser]]></ToUserName> 开发者微信 <FromUserName><![CDATA[FromUser]]></FromUserName> 发送发账号 <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> 消息类型 <Event><![CDATA[subscribe]]></Event> 事件类型 </xml>*/ // simplexml_load_string();将XML转换成对象 $postObj = simplexml_load_string($postArr); // 判断该数据包是否是消息订阅的时间推送 if($postObj->MsgType == 'event') { // 判断是否是关注事件 if ($postObj->Event == 'subscribe') { // 回复用户消息 $ToUserName = $postObj->FromUserName; $FromUserName = $postObj->ToUserName; $CreateTime = time(); $MsgType = 'text'; $Content = '欢迎关注清风草'.'\n'.$postObj->ToUserName.'-'.$postObj->FromUserName; $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $info = sprintf($template, $ToUserName, $FromUserName, $CreateTime, $MsgType, $Content); echo $info; } } /*// 回复纯文本 if($postObj->MsgType == 'text') { // 判断是否是关注事件 switch(strtolower(trim($postObj->Content))) { case 'php': $Content = 'php相关知识thinkphp框架'; break; case 1: $Content = '这是数字1'; break; case 'test': $Content = '请不要在这里输入test英文字段'; break; case 'i love you': $Content = 'Me,Too !'; break; case 'Mother': $Content = 'The Mothers Day in next monday !'; break; } // 回复用户消息 $ToUserName = $postObj->FromUserName; $FromUserName = $postObj->ToUserName; $CreateTime = time(); $MsgType = 'text'; $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; echo sprintf($template, $ToUserName, $FromUserName, $CreateTime, $MsgType, $Content); }*/ // 用户发送tuwen1关键字的时候,回复一个单图文 if( strtolower($postObj->MsgType == 'text') && trim( $postObj->Content == 'tuwen1')){ $ToUserName = $postObj->FromUserName; $FromUserName = $postObj->ToUserName; $arr = array( array( 'title' => 'Qingfeng', 'description' => "It is very cool", 'picUrl' => 'http://scgg.gyyx.cn/wd/images/wd170328/wd_bd_logo.png', 'url' => 'http://www.gyyx.cn/', ), ); $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>".count($arr)."</ArticleCount> <Articles>"; foreach($arr as $k => $v){ $template .= "<item> <Title><![CDATA[".$v['title']."]]></Title> <Description><![CDATA[".$v['description']."]]></Description> <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl> <Url><![CDATA[".$v['url']."]]></Url> </item>"; } $template .= "</Articles> </xml>"; echo sprintf($template,$FromUSerName,$ToUserName,time(),'news'); }else{ switch(trim($postObj->Content)) { case 'php': $Content = 'php相关知识thinkphp框架'; break; case 1: $Content = '这是数字1'; break; case 'test': $Content = '请不要在这里输入test英文字段'; break; case 'i love you': $Content = 'Me,Too !'; break; case 'mother': $Content = 'mother loves father over forever !'; break; } // 回复用户消息 $ToUserName = $postObj->FromUserName; $FromUserName = $postObj->ToUserName; $CreateTime = time(); $MsgType = 'text'; $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; echo sprintf($template, $ToUserName, $FromUserName, $CreateTime, $MsgType, $Content); } } } ?>
怎么没人回答呢。。。。。