微信开发_微信教程__微信通讯框架V1.0
做个广告先,
PHP千人群(6848027)
C++群 (1414577)
看雪汇编&反汇编群(15375777)
看雪汇编&反汇编2群(4915800)
转载不一定注明出处,只要推荐下群就可以哈,各位亲~
微信开发_微信教程__微信通讯框架V1.0
<?php /** * 微信消息框架 by 牛牛 Q 184377367 */ class WeChat { public $token = null; public $msgType = null; public $event = null; public $eventKey = null; public $keyword = null; public $context = array(); public $insHandle = array(); public function Valid($retstr) { if ($this->CheckSignatrue()) { echo $retstr; exit; } } public function RegisterHandle(WeChatInterface $ins){ array_push($this->insHandle, $ins); } public function GetPostContent() { //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); $this->context['fromUserName'] = $postObj->FromUserName; $this->context['toUserName'] = $postObj->ToUserName; $this->context['time'] = $postObj->CreateTime; $this->keyword = trim($postObj->Content); $this->msgType = $postObj->MsgType; // $this->msgType = 'event'; $this->event = $postObj->Event; $this->eventKey = $postObj->EventKey; $this->ActionRouter(); } else { echo ""; exit; } } private function CheckSignatrue() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $tmpArr = array($this->token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if ($tmpStr == $signature) { return true; } else { return false; } } /* * 事件消息 */ public function OnEvent($event, $eventkey, $context ){ if ( count($this->insHandle)>0 ){ foreach ( $this->insHandle as $ins ){ $ins->OnEvent($event, $eventkey, $context); } } } /* * 文字消息 */ public function OnText($keyword,$context){ if ( count($this->insHandle)>0 ){ foreach ( $this->insHandle as $ins ){ $ins->OnText($keyword,$context); } } } private function ActionRouter(){ switch ($this->msgType) { case 'event': $this->OnEvent($this->event, $this->eventKey, $this->context); break; case 'text': $this->OnText($this->keyword, $this->context); break; default : exit(); } } } ?>
<?php /** * 微信消息框架 by 牛牛 Q 184377367 */ interface WeChatInterface{ public function OnEvent($event, $eventkey, $context); public function OnText($keyword,$context); } ?>
<?php /** * 微信消息框架 by 牛牛 Q 184377367 * 操作类必须实现 * WeChatInterface接口中的方法(OnEvent,OnText) * OnEvent * OnText * 微信有事件消息触发OnEvent,文本消息触发OnText */ class WeChatIns implements WeChatInterface { public function OnEvent($event, $eventkey, $context) { $this->PostNews($context); } public function OnText($keyword, $context) { $this->PostNews($context); } public function PostText(){ } public function PostNews($context){ $ary[0]['Title'] = '测试'; $ary[0]['Description'] = '测试'; $ary[0]['PicUrl'] = 'http://xxx.jpg'; $ary[0]['Url'] = 'http://qq.com'; echo WeChatUtil::CreateNewsXML($ary, $context); } } ?>
<?php /** * 微信消息框架 by 牛牛 Q 184377367 */ class WeChatUtil { static public function CreateNewsXML( $ary ,$context) { $count = count($ary); $textTpl = "<xml> <ToUserName><![CDATA[".$context['fromUserName']."]]></ToUserName> <FromUserName><![CDATA[".$context['toUserName']."]]></FromUserName> <CreateTime>".time()."</CreateTime> <MsgType><![CDATA[news]]></MsgType> <Content><![CDATA[这里是内容]]></Content> <ArticleCount>".$count."</ArticleCount> <Articles>"; foreach($ary as $k=>$v){ $textTpl.="<item> <Title><![CDATA[".$v['Title']."]]></Title> <Description><![CDATA[".$v['Description']."]]> </Description> <PicUrl><![CDATA[".$v['PicUrl']."]]></PicUrl> <Url><![CDATA[".$v['Url']."]]></Url> </item>"; } $textTpl.="</Articles><FuncFlag>0</FuncFlag></xml>"; return $textTpl; } } ?>
<?php /** * 微信消息框架 by 牛牛 Q 184377367 */ /* import 是TP函数,换成include吧 0 0 */ import('ORG.WeChatInterface'); import('ORG.WeChatIns'); import('ORG.WeChat'); $wechatObj = new WeChat(); //微信TOKEN $wechatObj->token = ''; $wechatObj->RegisterHandle( new WeChatIns() ); if (isset( $_GET['echostr'] )) { $wechatObj->Valid( $_GET['echostr'] ); } else { $wechatObj->GetPostContent(); } ?>
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南