ci写微信验证通过了但是不自动回复?求大神解答啊!?!
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');
class Index extends CI_Controller {
public function __construct(){
parent::__construct();
}
/*微信接入的验证*/
public function index()
{
$signature = $this->input->get('signature');
$nonce = $this->input->get('nonce');
$timestamp = $this->input->get('timestamp');
//第一次验证才会有,其他时候用户发送时候没有
$echostr = $this->input->get('echostr');
$token = "MYTOKEN";
$arr= array($nonce,$timestamp,$token);
sort($arr);
$str = implode('', $arr);
$str = sha1($str);
if($str == $signature && $echostr){
//如果第一次接入时候
echo $echostr;
exit;
}else{
//用户访问时候也要验证,但是没有echostr
$this->responseMsg();
}
}
/*微信接受消息回复*/
public function responseMsg(){
//用于得到php不能识别的post的数据
$postArr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
$postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
if($postObj){
$MsgType = $postObj->MsgType;
if($MsgType=='text' ){
$template = "<xml>
<ToUserName><!]></ToUserName>
<FromUserName><!]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><!]></MsgType>
<Content><!]></Content>
</xml>";
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$createTime = time();
$msgType = 'text';
$content = "欢迎您来见证我和仙女的爱情!";
$backInfo = sprintf($template,$toUser,$fromUser,$createTime,$msgType,$content);
echo $backInfo;
}
}
else{
echo '还未获到参数';
}
}
}
是什么地方出了错误啊?还不好调试啊?! 也没有报错啊?搞得郁闷了!?!?! 什么都不做,写个固定的字符串直接回复试试,另外你那个验证逻辑有点问题,如果签名验证不通过,你还是会自动回复,应该是验证通过了,才能有所谓的第一次验证或者回复其他消息 下载一个wechat封装类,快捷省事,而且还很方便很全
页:
[1]