以tshop为例

直接上代码:

企业 cc_wx_sys表为自建,存储系统消息的配置的

字段: id type key status

<?php
/*** tpshop* ============================================================================* * 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。* 网站地址: http://www.tp-shop.cn* ----------------------------------------------------------------------------* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .* 不允许对程序代码以任何形式任何目的的再发布。* ============================================================================* 微信交互类*/
namespace Home\Controller;
use Think\Controller;
class WeixinController extends BaseController {public $client;public $wechat_config;public function _initialize(){parent::_initialize();//获取微信配置信息$this->wechat_config = M('wx_user')->find();        $options = array('token'=>$this->wechat_config['w_token'], //填写你设定的key'encodingaeskey'=>$this->wechat_config['aeskey'], //填写加密用的EncodingAESKey'appid'=>$this->wechat_config['appid'], //填写高级调用功能的app id'appsecret'=>$this->wechat_config['appsecret'], //填写高级调用功能的密钥
                );}public function oauth(){}public function index(){if($this->wechat_config['wait_access'] == 0)        exit($_GET["echostr"]);else        $this->responseMsg();}    public function responseMsg(){//get post data, May be due to the different environments$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (empty($postStr))                     exit("");/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,the best way is to check the validity of xml by yourself */libxml_disable_entity_loader(true);$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$time = time();$keyword = trim($postObj->Content);$msgtype = 'text'; //消息类型:文本$textTp1sys = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$textTpl2sys = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><ArticleCount><![CDATA[%s]]></ArticleCount><Articles><item><Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>                               </Articles></xml>";//点击菜单拉取消息时的事件推送/** 1、click:点击推事件* 用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南)* 并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;*/if($postObj->MsgType == 'event' && $postObj->Event == 'CLICK'){$keyword = trim($postObj->EventKey);}/*系统关注,回复*/if($postObj->MsgType == 'event') {if ($postObj->Event == 'subscribe') { //如果是订阅事件$sys = M('wx_sys')->where("status=1")->find();if($sys) {$keyw=$sys['key'];if($sys['type']==1){$wx_text = M('wx_text')->where("keyword like '%$keyw%'")->find();if ($wx_text) {$contentStr = $wx_text['text'];$resultStr = sprintf($textTp1sys, $fromUsername, $toUsername, $time, $msgtype, $contentStr);echo $resultStr;exit();}}else{$wx_img = M('wx_img')->where("keyword like '%$keyword%'")->find();if($wx_img) {$resultStr = sprintf($textTpl2sys, $fromUsername, $toUsername, $time, 'news', '1', $wx_img['title'], $wx_img['desc'], $wx_img['pic'], $wx_img['url']);exit($resultStr);}}}}}if(empty($keyword))exit("Input something...");// 图文回复$wx_img = M('wx_img')->where("keyword like '%$keyword%'")->find();if($wx_img){$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><ArticleCount><![CDATA[%s]]></ArticleCount><Articles><item><Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>                               </Articles></xml>";                                        $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,'news','1',$wx_img['title'],$wx_img['desc'], $wx_img['pic'], $wx_img['url']);exit($resultStr);                   }// 文本回复$wx_text = M('wx_text')->where("keyword like '%$keyword%'")->find();if($wx_text){$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";$contentStr = $wx_text['text'];$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);exit($resultStr);}// 其他文本回复                $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";                    $contentStr = '欢迎来到TPshop商城!';$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);exit($resultStr);                   }
}

参考:

http://www.jb51.net/article/90019.htm

http://www.tuicool.com/articles/QF3Qjm

转载于:https://www.cnblogs.com/xqschool/p/6745113.html

微信公众号开发之文本消息自动回复,以及系统关注自动回复,php代码相关推荐

  1. 微信公众号php编程,PHP编程:微信公众号开发之文本消息自动回复php代码

    搜索热词 <微信公众号开发之文本消息自动回复PHP代码>要点: 本文介绍了微信公众号开发之文本消息自动回复PHP代码,希望对您有用.如果有疑问,可以联系我们. 本文实例为大家分享了PHP微 ...

  2. 微信公众 php代码,微信公众号开发之文本消息自动回复php代码_php实例

    本文实例为大家分享了php微信文本消息自动回复 别代码,供大家参考,具体内容如下 1.PHP示例代码下载 下载地址1:http://xiazai.php.net/201608/yuanma/phpwx ...

  3. php微信文本通讯_微信公众号开发之文本消息自动回复php代码

    本文实例为大家分享了php微信文本消息自动回复 别代码,供大家参考,具体内容如下 1.PHP示例代码下载 下载地址1:http://xiazai.jb51.net/201608/yuanma/phpw ...

  4. 微信公众号自动回复php代码,微信公众号开发之文本消息自动回复php代码

    本文实例为大家分享了php微信文本消息自动回复 别代码,供大家参考,具体内容如下 1.PHP示例代码下载 下载地址1:http://xiazai.zyiz.net/201608/yuanma/phpw ...

  5. 微信公众号php二次开发,微信公众号开发之文本消息自动回复php代码

    本文实例为大家分享了php微信文本消息自动回复 别代码,供大家参考,具体内容如下 1.PHP示例代码下载 下载地址1:http://xiazai.jb51.net/201608/yuanma/phpw ...

  6. 公众平台自动回复php代码,微信公众号开发之文本消息自动回复php代码

    本文实例为大家分享了php微信文本消息自动回复 别代码,供大家参考,具体内容如下 1.PHP示例代码下载 下载地址1:http://xiazai.gimoo.net/201608/yuanma/php ...

  7. 201.微信公众号开发【文本消息】

    因为微信消息之间传递使用的是xml,对我们来说不大方便,我们需要创建一个Message工具将它转成Map形式(接受到数据转成Map,发送数据时再转成xml) 将xml 转Map(用到dom4j架包) ...

  8. 微信公众号开发接收图片消息,获取用户发送图片的media_id

    现在的手机都有拍照功能, 而且人们拍完照后, 喜欢跟朋友分享. 微信公众号也提供了一个功能, 允许你的粉丝在后台回复图片, 你可以通过公众平台提供的api接口, 获取到图片media_id, 然后把图 ...

  9. 微信messageutil.java_java微信公众平台开发回复文本消息

    WeChatServlet代码: package com.test; import java.io.IOException; import java.io.PrintWriter; import ja ...

最新文章

  1. 是固执成见还是步步为营,工程建筑行业如何追赶人工智能化潮流?
  2. python reader循环_Python的for循环和while循环。
  3. Boost:基于Boost的异步UDP回显服务器
  4. iOS 深拷贝和浅拷贝
  5. 基于Linux的USB 主/从设备之间通讯的三种方式
  6. 【Canal】互联网背景下有哪些数据同步需求和解决方案?看完我知道了!!
  7. 大数据可视化设计到底是啥,该怎么用
  8. 定时任务 cron 表达式详解
  9. PHP parseurl 一个好用的函数
  10. 算法 - 反转字符串
  11. python 调用mysql存储过程返回结果集
  12. 程序员相亲图鉴,太真实了!
  13. 【struts2】继承ActionSupport类
  14. 1024 科学计数法(C语言)测试点4详解
  15. 如何给ppt编辑页码_PPT中怎样设置页码
  16. 一篇Chat(沉迷机器人操作系统(ROS)的一个理由和四种修仙秘籍)
  17. L2-029 特立独行的幸福
  18. 作业1丨创建问答式简历程序
  19. 【开发利器】中国国内可用API合集
  20. CSS——制作三角形

热门文章

  1. pyqt5子窗口跳出主窗口_弹出式窗口与 可用性,转换和跳出率
  2. 面试官问:来实现一个Promise
  3. Ubuntu 18.04下命令安装VMware Tools
  4. [20171130]关于rman的一些总结.txt
  5. [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE 原创陈本峰2009-02
  6. 用Python+Django在Eclipse环境下开发web网站【转】
  7. Python:file (read,readline,readline )使用方法
  8. JAVA如何正确处理Unicode字符
  9. nagios的搭建及配置----(中)
  10. 让我们的标签语义化成为一种习惯好处多多