PHP对接微信公众号,并实现返回给用户文字或图片或图文的内容。
来源:互联网 发布:淘宝 prd mrd 模板 编辑:程序博客网 时间:2024/06/15 03:04
代码示例:
<?phpdefine("TOKEN", "weixin");//我用的token名是weixin,你可以自己换$wechatObj = new wechatCallbackapiTest();$wechatObj->responseMsg();class wechatCallbackapiTest{public function valid(){ $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg(){$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];if (!empty($postStr)){ libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content);$event = $postObj->Event; $time = time(); $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>"; switch($postObj->MsgType){case 'event':if($event == 'subscribe'){//关注后的回复$contentStr = "关注后的回复";$msgType = 'text';$textTpl = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $textTpl;}break;case 'text':$newsTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> <FuncFlag>0</FuncFlag> </xml>";if($keyword=="图片"){$msgType = 'image';$contentStr = "GlCd0HTzI8A1MzDZIkAlcLkXj68YRyRRbpunVx00Hc0";//这里的contentstr填写的是图片的media_id,再你公众号后台的素材管理里,有图片素材,就是那些图片素材的id,至于如何获取,请看我的另一篇博客。$resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);//这里的newstpl,我定义的是image类型,名字随便起,如果你想返回文字类型,就用texttpl。echo $resultStr; }else if($keyword=="图文"){$tuwenTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml>";$title = '不好意思,没找到哟,请留言!';//这是标题$des1 ="";//这是描述$picUrl1 ="http://www.nichousha.cc/2.jpg";//这是引用的图片地址$url="http://nichousha.cc/wap/index.php?m=gbook-show.html";//这是点击图文后跳转的地址$resultStr= sprintf($tuwenTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;echo $resultStr; }$contentStr = "你说啥,有种用普通话再说一遍!";//如果用户输入的信息,都没有匹配成功,就返回这一句$msgType = 'text';$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;break;default:break;} }else { echo "你好!欢迎进入我的微信公众号"; exit; } }private function checkSignature(){ // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN;$tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rulesort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}}?>将这个文件上传到你的服务器上,然后在微信公众号后台找到基础配置,把服务器地址(这个文件在你服务器上的路径)和令牌(我用的是weixin)填写进去就ok了。
阅读全文
0 0
- PHP对接微信公众号,并实现返回给用户文字或图片或图文的内容。
- php 微信模拟登陆给用户发送消息(文字,图片,图文)
- 不用微信SDK实现图片分享或文字分享
- 微信公众号每次调用接口正确或错误的返回码
- 微信公众号开发:PHP,对接微信公众账号的测试文档wx_sample.php的解析
- 解决“此图片来自微信公众平台 未经允许不可引用”的方法 或 防盗链 PHP
- 给 木子健康管理室 添加微信公众号 并制作一条 图文消息
- 走进微信公众号实现关注之后推送一条服务器自定义的消息给用户
- C#判断用户是否使用微信浏览器,并据此来显示真实内容或二维码
- 微信公众平台开发正确或错误的返回码
- 开发微信公众平台群发接口时,在对接“上传图文消息素材”时,返回44003
- 微信公众平台给用户发红包+php
- 微信公众号开发分享网页给朋友或朋友圈
- php抓取微信的图文内容
- 微信生成公众号带参数二维码用户头像 加上文字生成图片(三)
- 微信公众号开发 同时回复用户多条信息(包括图片和文字)
- 图片或文字或图文混合连续滚动
- 图片或文字或图文混合连续滚动
- mybatis调用oracle自定义函数
- KMP中的一些技巧(°ο°)~ @
- [My SQL] 创建表和操纵表
- 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析
- 一步一步教你centos7.3安装redis
- PHP对接微信公众号,并实现返回给用户文字或图片或图文的内容。
- GET和POST区别
- Zookeeper报错 len4807928 is out of range!
- Ubuntu桌面入门指南
- 什么是内存泄露?
- 快速排序Java实现
- String to java.sql.Date
- python学习(七)之函数参数
- Java空字符串与null区别