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

照搬下来的 也没有回复消息 TOKEN验证已经成功

<?php

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller{

public function __construct(){


}

    public function index(){

        //1.将timestamp,nonce,token 按字典序排序

$timestamp = $_GET['timestamp'];

$nonce     = $_GET['nonce'];

$token     = 'weixin';

$signature  = $_GET['signature'];

$echostr = $_GET['echostr'];

$array      = array( $timestamp,$nonce,$token );

sort( $array );

//2.将排序后的三个参数拼接之后sha1加密

$tmpstr  = sha1( implode($array) );

//1.将加密后的字符串与signature对比,判断该请求是否来自微信

if( $tmpstr == $signature && $echostr){

//第一次接入微信API的时候进行验证

echo $echostr;

exit;

}else{

$this->responseMsg();

}

    }

//接受事件推送并回复

public function responseMsg(){

//1.获取到微信推送过来的poat数据(xml格式)

$postArr  = $GLOBALS['HTTP_RAW_POST_DATA'];

//2.处理消息类型,并设置回复类型和内容

$postObj  = simplexml_load_string($postArr);

//判断推动的数据包是不是订阅事件

if(strtolower($postObj->MsgType) == 'event'){

//如果是关注事件 subscribe 事件

if(strtolower($postObj->Event) == 'subscribe'){

//回复用户消息

$toUser = $postObj->FromUserName;

$fromUser = $postObj->ToUserName;

$time = time();

$msgType    = 'text';

$content    = '欢迎关注我们';

$tamplate = "<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<Content><![CDATA[%s]]></Content>

</xml>";

$info = sprintf($tamplate,$fromUser,$toUser,$time,$msgType,$content);

echo $info;

}

}

if(strtolower($postObj->MsgType) == 'text'){

if($postObj->Content == 'you'){

$tamplate = "<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<Content><![CDATA[%s]]></Content>

</xml>";

$fromUser = $postObj->ToUserName;

$toUser = $postObj->FromUserName;

$time = time();

$content    = '这个网站很不错';

$msgType    = 'text';

echo  sprintf($tamplate,$toUser,$fromUser,$time,$msgType,$content);

}

}

}

}


正在回答

6 回答

一样的,代码百分之百没错,但就是不回复

0 回复 有任何疑惑可以回复我~

求解,token已经验证成功,关注后还是没有回复成功,代码都确保一致了

0 回复 有任何疑惑可以回复我~

//$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];  这个有点问题,获取不到数据 用下面这个吧 

$postArr = file_get_contents('php://input');


0 回复 有任何疑惑可以回复我~

我用TP5按代码写还是获取不到回复消息


0 回复 有任何疑惑可以回复我~

关注之后不回复,可能是你代码中的$info=sprintf()中的参数跟$tamplate中的<xml>中的代码没有对应上,要先写$toUser,再写$fromUser

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5902a492000168f211070492.jpg
服务器地址这块要加上,,才能提交成功

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

照搬下来的 也没有回复消息 TOKEN验证已经成功

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号