<?php
namespace?Home\Controller;
use?Think\Controller;
class?IndexController?extends?Controller?{
????public?function?index(){
????????//?獲得參數(shù)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接口時(shí)驗(yàn)證,因?yàn)榈谝淮斡兴膫€(gè)參數(shù)發(fā)送過來,其他情況下發(fā)送三個(gè)
????????????echo?$echostr;
????????????exit;
????????}else
????????{?
????????????$this->responseMsg();
????????}
????}
????public?function?responseMsg()
????{
????????//?獲取微信推送過來的post數(shù)據(jù)(XML格式)
????????$postArr?=?$GLOBALS['HTTP_RAW_POST_DATA'];
????????//?處理消息類型,并設(shè)置回復(fù)類型和內(nèi)容
????????/*<xml>
????????<ToUserName><![CDATA[toUser]]></ToUserName>??開發(fā)者微信
????????<FromUserName><![CDATA[FromUser]]></FromUserName>?發(fā)送發(fā)賬號
????????<CreateTime>123456789</CreateTime>
????????<MsgType><![CDATA[event]]></MsgType>??消息類型
????????<Event><![CDATA[subscribe]]></Event>????事件類型
????????</xml>*/
????????//?simplexml_load_string();將XML轉(zhuǎn)換成對象
????????$postObj?=?simplexml_load_string($postArr);
????????//?判斷該數(shù)據(jù)包是否是消息訂閱的時(shí)間推送
????????if($postObj->MsgType?==?'event')
????????{
????????????//?判斷是否是關(guān)注事件
????????????if?($postObj->Event?==?'subscribe')?{
????????????????//?回復(fù)用戶消息
????????????????$ToUserName?=?$postObj->FromUserName;
????????????????$FromUserName?=?$postObj->ToUserName;
????????????????$CreateTime?=?time();
????????????????$MsgType?=?'text';
????????????????$Content?=?'歡迎關(guān)注清風(fēng)草'.'\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;
????????????}
????????}
/*//?回復(fù)純文本
if($postObj->MsgType?==?'text')
????????{
????????????//?判斷是否是關(guān)注事件
????????????switch(strtolower(trim($postObj->Content)))?{
case?'php':
$Content?=?'php相關(guān)知識thinkphp框架';
break;
case?1:
$Content?=?'這是數(shù)字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;
}
????????????????//?回復(fù)用戶消息
????????????????$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);??????????
????????}*/
//?用戶發(fā)送tuwen1關(guān)鍵字的時(shí)候,回復(fù)一個(gè)單圖文
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相關(guān)知識thinkphp框架';
break;
case?1:
$Content?=?'這是數(shù)字1';
break;
case?'test':
$Content?=?'請不要在這里輸入test英文字段';
break;
case?'i?love?you':
$Content?=?'Me,Too?!';
break;
case?'mother':
$Content?=?'mother?loves?father?over?forever?!';
break;
}
????????????????//?回復(fù)用戶消息
????????????????$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);
}
}
}
?>
2017-05-15
怎么沒人回答呢。。。。。