php微信公众平台开发之如何处理订阅事件
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章将为大家详细讲解有关php微信公众平台开发之如何处理订阅事件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、简介新用户关注微信公众平台,将产生一个订阅事件
千家信息网最后更新 2025年01月31日php微信公众平台开发之如何处理订阅事件
这篇文章将为大家详细讲解有关php微信公众平台开发之如何处理订阅事件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、简介
新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应回复处理。
在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台,通俗一点讲就是该平台的"使用说明书"。
本文将详细讲述对subscribe事件的处理过程,回复相应信息提升交互性。
二、思路分析
微信目前提供了五种消息类型,分别为:
文本消息(text);
图片消息(image);
地理位置消息(location);
链接消息(link);
事件推送(event);
接收到消息后,首先需要对消息类型做出判断,然后再针对不同类型的消息做出处理。在事件推送中,事件类型又分为三种,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件),还需要再加一次判断;判断为subscribe事件后,根据设定好的欢迎消息,回复给用户。
三、判断消息类型
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$RX_TYPE = trim($postObj->MsgType);switch($RX_TYPE){ case "text": $resultStr = $this->handleText($postObj); break; case "event": $resultStr = $this->handleEvent($postObj); break; default: $resultStr = "Unknow msg type: ".$RX_TYPE; break;}
说明:
$RX_TYPE = trim($postObj->MsgType); 得到消息类型;case "text": $resultStr = $this->handleText($postObj); 使用handleText() 函数处理文本消息;case "event": $resultStr = $this->handleEvent($postObj); 使用handleEvent() 函数处理事件推送;
四、判断事件类型
switch ($object->Event){ case "subscribe": $contentStr = "感谢您关注【卓锦苏州】"."\n"."微信号:zhuojinsz"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待..."; break; default : $contentStr = "Unknow Event: ".$object->Event; break;}
说明:
如果是subscribe事件,设定回复内容为"感谢您关注【卓锦苏州】...";
五、完整代码
responseMsg();//$wechatObj->valid();class wechatCallbackapiTest{ /*public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } }*/ public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch($RX_TYPE) { case "text": $resultStr = $this->handleText($postObj); break; case "event": $resultStr = $this->handleEvent($postObj); break; default: $resultStr = "Unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; } } public function handleText($postObj) { $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = ""; if(!empty( $keyword )) { $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; } } public function handleEvent($object) { $contentStr = ""; switch ($object->Event) { case "subscribe": $contentStr = "感谢您关注【卓锦苏州】"."\n"."微信号:zhuojinsz"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待..."; break; default : $contentStr = "Unknow Event: ".$object->Event; break; } $resultStr = $this->responseText($object, $contentStr); return $resultStr; } public function responseText($object, $content, $flag=0) { $textTpl = " %s 0 "; $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); return $resultStr; } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } }}?> %s %d
关于"php微信公众平台开发之如何处理订阅事件"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
苏州
事件
消息
平台
输入
类型
订阅
信息
处理
公众
内容
天气
更多
查询
功能
用户
篇文章
推送
开发
卓越
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
塞尔达传说有几个服务器
网络安全法 安全审计
什么是网络安全技术的基础
绿书签护苗网络安全课简报
服务器书籍推荐
成都程序软件开发怎么样
上海银联软件开发服务优化
网络安全法 孙佑海
it软件开发的用途和特点
ef修改查出来的数据库
连接数据库配置
选择软件开发公司依据
java 文本 数据库
东莞外包软件开发
ug8.5里没有密度数据库吗
中国网络安全法漫画图解
网络安全领域补丁是指
香格里拉会谈网络安全
软件开发 应该转什么行业
软件开发prd文档组成
服务器自动切换ip软件
鄂尔多斯普惠消费服务器
互联网科技创新能力
网络安全教育主题
安全软件开发的威胁建模
数据库name的数据类型
软件开发就业前景
sql命令行建立数据库
北京华腾云网网络技术有限公司
运维工程师可以管几个服务器