为了账号安全,请及时绑定邮箱和手机立即绑定

用thinkphp5做微信公众号开发为什么关注推送消息回复不了一直提示服务器出现故障?

用thinkphp5做微信公众号开发为什么关注推送消息回复不了一直提示服务器出现故障?

PHP
维他命10 2017-11-14 18:56:13
<?phpnamespace app\index\controller;use think\Controller;class Index extends controller{ public function index(){ //获得参数 signature nonce token timestamp echostr $nonce     = $_GET['nonce']; $token     = 'imooc'; $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']; //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 = ''; // gh_e79a177814ed //判断该数据包是否是订阅的事件推送 if( strtolower( $postObj->MsgType) == 'event'){ //如果是关注 subscribe 事件 if( strtolower($postObj->Event == 'subscribe') ){ //回复用户消息(纯文本格式) $toUser   = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $time     = time(); $msgType  =  'text'; $content  = '欢迎关注我们的微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName; $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;        }    }}跪求各位大神
查看完整描述

2 回答

?
KEN小萌

TA贡献1条经验 获得超0个赞

同问同问

查看完整回答
反对 回复 2017-12-20
  • KEN小萌
    KEN小萌
    http://www.imooc.com/qadetail/198547?t=395582 这个帖子完美的解决了这个问题
?
qq_孤患_0

TA贡献8条经验 获得超1个赞

这个好像不能直接在tp框架里面写配置验证,最好把验证写成类 调用类去验证,我之前试过  你把这些验证放到php文件(只是测试)去验证就可以通过了 

查看完整回答
反对 回复 2017-11-20
  • 2 回答
  • 0 关注
  • 3016 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信