微信公众平台 开放平台 自定义回复和事件推送代码
2013-06-14 16:20
513 查看
<?php /** * wechat php test */ //define your token define("TOKEN", "xxxxx"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->responseMsg(); 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); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $Event = trim($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>"; //测试事件推送 if($Event=="subscribe"){ $contentStr = "欢迎订阅果晶晶网络科技有限公司公众平台!"; $msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } //test if($keyword==1){//文本 $contentStr = $keyword . "测试发送文本!"; $msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else if($keyword==2){//音乐 $textTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Music> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music> <FuncFlag>0</FuncFlag> </xml>"; $msgType = "music"; $msgtitle="致青春"; $Description="电影《致我们终将逝去的青春》 主题曲"; $MusicUrl="http://music.baidu.com/song/40153340#"; $HQMusicUrl="http://music.baidu.com/song/40153340#"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $msgtitle,$Description,$MusicUrl,$HQMusicUrl); echo $resultStr; }else if($keyword==3){//图文 $textTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> <FuncFlag>1</FuncFlag> </xml> "; $msgType = "news"; $title1="致青春"; $Description="电影《致我们终将逝去的青春》 主题曲"; $PicUrl="http://img10.360buyimg.com/da/g13/M05/01/02/rBEhU1G6iA8IAAAAAADmPyFSPhUAAANiwAxLNcAAOZX575.jpg"; $Url="http://sale.jd.com/act/qYHkylDS0LVOg.html?sid=2&cid=601&aid=3678&bid=661&unit=36617&advid=60724&guv="; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $title1,$Description,$PicUrl,$Url); echo $resultStr; } // if (!empty ($keyword)) { $contentStr = $keyword . "Welcome to wechat world!"; $msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } else { echo "Input something..."; } } else { echo ""; exit; } } 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; } } } ?>
相关文章推荐
- 微信公众平台 开放平台 自定义回复和事件推送代码 .
- 微信公众平台 开放平台 自定义回复和事件推送代码
- 微信公众平台接入Java实例(结合百度开放云平台)
- C# asp.net 搭建微信公众平台(可实现关注消息与消息自动回复)的代码以及我所遇到的问题
- Java微信公众平台开发(十一)——开发中微信公众平台/开放平台/商户平台的关联
- ABAP--通过自定义类使用ALV(相应事件)的代码
- QQ开放平台QQ登录PHP代码
- (12)自定义数据流(实战Docker事件推送的REST API)——响应式Spring的道法术器
- 微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试
- 微信公众平台创建自定义菜单的PHP代码
- ABAP--通过自定义类使用ALV(相应事件)的代码
- 元图地图开放平台事件机制
- [c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
- 微信开发之事件推送与被动回复
- 微信开放平台与微信公众平台简介
- 微信公众平台回复过了怎么不能再次回复?亲们要注意查看"公众平台回复用户消息时限变更通知"的公告啊
- 微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件
- 30行代码消费腾讯人工智能开放平台提供的自然语言处理API
- ABAP--通过自定义类使用ALV(相应事件)的代码
- 微信公众号开发整理(六)--自定义菜单事件推送