【微信公众号】关注的时候不显示自动回复信息

1、采用下面的代码来获取微信发送的xml字符串

$postArr = file_get_contents("php://input");
	        libxml_disable_entity_loader(true);
	        $postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);

2、写模板的时候不要加任何空格,如下:

$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";

全部代码

/*接受事件推送并回复*/
    public function responseMsg()
    {
    	//1. 当有用户关注我们的公众号时,微信会发送过来一个xml形式的数据,我们来获取
        // 2.处理消息类型,并设置回复类型和内容
			$postArr = file_get_contents("php://input");
	        libxml_disable_entity_loader(true);
	        // 将良好的xml字符串转换为SimpleXMLElement对象,转化之后的类型如下图(键值对)
	        $postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);
			// 判断该数据包是否是订阅的时间推送
			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);//后面的值将会按顺序填到$template里面的%s
					echo $info;
				}
			}
    }

猜你喜欢

转载自blog.csdn.net/weixin_41728561/article/details/80454624
今日推荐