上一篇文章我们知道怎么获取二维码,这样别人就可以扫描二维码来关注我们,但是别人关注后,发送消息,我们怎么进行相关处理?
这里我们就来学习下怎么处理处理这些消息,以及推送消息。
学习之前首先你需要有一个域名和空间
url:填写你希望微信公众平台把用户的消息转发到哪里
token:随便输入,用于微信公众平台和你的站点进行第一次通信建立关联用
/* 用于第一次验证我们网站url合法性 */ public function firstValid(){ //检验签名的合法性 if($this->_checkSignature()){ //签名合法,告知微信公众平台服务器 echo $_GET['echostr']; } } /** * 验证签名 * @return bool */ private function _checkSignature(){ //获得由微信公众平台请求的验证数据 $signature = $_GET['signature']; $timestamp = $_GET['timestamp']; $nonce = $_GET['nonce']; //将时间戳,随机字符串,token按照字母顺序排序,病并连接 $tmp_arr = array($this->_token,$timestamp,$nonce); sort($tmp_arr,SORT_STRING);//字典顺序 $tmp_str = implode($tmp_arr);//连接 $tmp_str = sha1($tmp_str);//sha1加密 if($signature==$tmp_str){ return true; }else{ return false; }
在你的站点写一个脚本,调用一下firstValid 就可以完成微信公众平台和你站点的关联。$this->_token,就是你上面写token。
然后再提交,就能成功了。
1、关注后,欢迎语的设置
有人关注后,微信公众平台会给我们发一个xml格式的数据,如下:
然后我们对这个信息进行获取,转化成我们想要的格式,进行相关判断,返回数据,同样也需要组装成xml格式
public function responseMsg(){ /* 获得请求时POST:XML字符串 不能用$_POST获取,因为没有key */ $xml_str = $GLOBALS['HTTP_RAW_POST_DATA']; if(empty($xml_str)){ die(''); } if(!empty($xml_str)){ // 解析该xml字符串,利用simpleXML libxml_disable_entity_loader(true); //禁止xml实体解析,防止xml注入 $request_xml = simplexml_load_string($xml_str, 'SimpleXMLElement', LIBXML_NOCDATA); //判断该消息的类型,通过元素MsgType switch ($request_xml->MsgType){ case 'event': //判断具体的时间类型(关注、取消、点击) $event = $request_xml->Event; if ($event=='subscribe') { // 关注事件 $this->_doSubscribe($request_xml); }elseif ($event=='CLICK') { //菜单点击事件 $this->_doClick($request_xml); }elseif ($event=='VIEW') { //连接跳转事件 $this->_doView(