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

26 篇文章 0 订阅
5 篇文章 0 订阅

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;
				}
			}
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值