16_szez谋事在人_成事在天
2019-01-04 00:42
<?php
// 本类由系统自动生成,仅供测试用途
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function _construct(){
}
public function index(){
//1.获得参数signature,echostr,timestamp,noce,token 按字典序排序
$nonce = $_GET['nonce'];
$token = 'Glaze';
$timestamp = $_GET['timestamp'];
$echostr = $_GET['echostr'];
$signature = $_GET['signature'];
//形成数组,然后按字典序排序
$array = array();
$array = array($nonce,$timestamp,$token);
sort($array);
//拼接成字符串,sha1加密,然后与signature进行校验
$str = sha1(implode($array));
if ( $str == $signature && $echostr) {
//第一次接入weixin api接口的时候
echo $echostr ;
exit ;
}else{
$this->reponseMsg;
}
}
// 接受事件推送并回复
public function reponseMsg(){
//1.获取到微信推送过来post数据 (XML格式)
$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
$tmpstr = $postArr;
//2.处理消息类型,并设置回复类型和内容
/*<xml>
<ToUserName>< ![CDATA[toUser] ]></ToUserName>
<FromUserName>< ![CDATA[FromUser] ]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType>< ![CDATA[event] ]></MsgType>
<Event>< ![CDATA[subscribe] ]></Event>
</xml> */
$postObj = simplexml_load_string( $postArr );
$postObj -> ToUserName = '';
$postObj -> FromUserName = '';
$postObj -> CreateTime = '';
$postObj -> MsgType = '';
$postObj -> Event = '';
//判断该数据包是否是订阅的事件推送
if( strtolower( $postObj->MsgType ) == 'event' ){
//如果是关注 subscribe 事件
if( strtolower($postObj->Event == 'subscribe')){
//回复用户消息
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = '欢迎关注微信公众账号';
$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, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
/*<xml>
<ToUserName>< ![CDATA[toUser] ]></ToUserName>
<FromUserName>< ![CDATA[fromUser] ]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType>< ![CDATA[text] ]></MsgType>
<Content>< ![CDATA[你好] ]></Content>
</xml>*/
}
}
}
}
还没有人回答问题,可以看看其他问题
PHP实现微信公众平台开发—提升篇
64945 学习 · 262 问题
相似问题