开发微信公众平台接口参数调试-判断用户行为

微信开发的时候,发现有个重要的变量$postObj
获得了一个xml结构装入的对象里
因为用户发来的事件,之前只知道用户发送一个消息,我进行处理。

今天要弄个用户订阅就给推送一个消息的功能,却发现不知道如何判断用户是订阅的操作,还是取消订阅,还是发消息

 public function responseMsg()
    {
    	global $db;
	//get post data, May be due to the different environments
	$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
	writeover("msg.txt",$postStr."\r\n","a+");
。。。。。。
  }

发现$postStr是之前没有封装的字符串,直接打印,即可知道用户的行为了。

测试输出的文件如下

<xml><ToUserName><![CDATA[gh_a64528aca3b]]></ToUserName>
<FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVaSyk]]></FromUserName>
<CreateTime>1394705044</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[ha]]></Content>
<MsgId>5990212551746353512</MsgId>
</xml>

MsgType即可判断用户行为text表示用户输入了一条文本信息。
如果是订阅,那么就是event 大家自己测试吧。

一个新用户关注公众账号发送的消息的例子

<xml><ToUserName><![CDATA[gh_a5218aca3b]]></ToUserName>
<FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVyk]]></FromUserName>
<CreateTime>1394706271</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>

这样就可以得到具体的事件类型了。

$msgtype = $postObj->MsgType;

能判断用户的行为,后续的操作就方便多了。

附上写入日志文件的代码

/*
‘r’ 只读方式打开,将文件指针指向文件头。
‘r+’ 读写方式打开,将文件指针指向文件头。
‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘w+’ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘a+’ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
*/
function writeover2($filename,$data,$method="rb+",$iflock=1) 
{ 
    @touch($filename);/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/ 
    $handle=@fopen($filename,$method); 
    if($iflock){ 
        flock($handle,LOCK_EX); 
    } 
    fwrite($handle,$data); 
    if($method=="rb+") ftruncate($handle,strlen($data)); 
    fclose($handle); 
}

如何接入微信开发,新手入门,请点击这里


This entry was posted in PHP and tagged , , , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/weixin-gong-canshu-debug/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力

Leave a Reply

Your email address will not be published. Required fields are marked *

*

*

  

About Me

静水流深,水滴石穿