微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件
来源:互联网 发布:java 比特币源代码 编辑:程序博客网 时间:2024/05/21 18:06
一页代码实现微信基本回复和点击事件功能,部署上去sae或者bae,妥妥的基本免费的服务器
不懂代码都基本每个人都可以做自己的微信公众号了
<?phpdefine("TOKEN", "mzh"); //换成你的token$wechatObj = new wechatCallbackapiTest();if (isset($_GET['echostr'])) { //验证微信 $wechatObj->valid();}else{ //回复消息 $wechatObj->responseMsg();}class wechatCallbackapiTest{ public function valid() { $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; 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; } } //回复消息 public function responseMsg(){ $postStr = $GLOBALS["HTTP_RAW_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->receiveText($postObj); break; case "image": $resultStr = $this->receiveImage($postObj); break; case "location": $resultStr = $this->receiveLocation($postObj); break; case "voice": $resultStr = $this->receiveVoice($postObj); break; case "video": $resultStr = $this->receiveVideo($postObj); break; case "link": $resultStr = $this->receiveLink($postObj); break; case "event": $resultStr = $this->receiveEvent($postObj); break; default: $resultStr = "unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; }} //接收文本消息 private function receiveText($object) { $keyword = trim($object->Content); $url = "http://api100.duapp.com/movie/?appkey=DIY_miaomiao&name=".$keyword; $output = file_get_contents($url,$keyword); $contentStr = json_decode($output, true); if (is_array($contentStr)){ $resultStr = $this->transmitNews($object, $contentStr); }else{ $resultStr = $this->transmitText($object, $contentStr); } return $resultStr; } //接收事件,关注等 private function receiveEvent($object) { $contentStr = ""; switch ($object->Event) { case "subscribe": $contentStr = "你关注了我"; //关注后回复内容 break; case "unsubscribe": $contentStr = ""; break; case "CLICK": $contentStr = $this->receiveClick($object); //点击事件 break; default: $contentStr = "receive a new event: ".$object->Event; break; } return $contentStr; } //接收图片 private function receiveImage($object) { $contentStr = "你发送的是图片,地址为:".$object->PicUrl; $resultStr = $this->transmitText($object, $contentStr); return $resultStr; } //接收语音 private function receiveVoice($object) { $contentStr = "你发送的是语音,媒体ID为:".$object->MediaId; $resultStr = $this->transmitText($object, $contentStr); return $resultStr; } //接收视频 private function receiveVideo($object) { $contentStr = "你发送的是视频,媒体ID为:".$object->MediaId; $resultStr = $this->transmitText($object, $contentStr); return $resultStr; } //位置消息 private function receiveLocation($object) { $contentStr = "你发送的是位置,纬度为:".$object->Location_X.";经度为:".$object->Location_Y.";缩放级别为:".$object->Scale.";位置为:".$object->Label; $resultStr = $this->transmitText($object, $contentStr); return $resultStr; } //链接消息 private function receiveLink($object) { $contentStr = "你发送的是链接,标题为:".$object->Title.";内容为:".$object->Description.";链接地址为:".$object->Url; $resultStr = $this->transmitText($object, $contentStr); return $resultStr; }//点击菜单消息 private function receiveClick($object) { switch ($object->EventKey) { case "1": $contentStr = "猫咪酱个性DIY服装,我们专业定制个性【班服,情侣装,亲子装等,有长短T恤,卫衣,长短裤】 来图印制即可,给你温馨可爱的TA,有事可直接留言微信"; break; case "2": $contentStr = "你点击了菜单: ".$object->EventKey; break; case "3": $contentStr = "是傻逼"; break; default: $contentStr = "你点击了菜单: ".$object->EventKey; break; } //两种回复 if (is_array($contentStr)){ $resultStr = $this->transmitNews($object, $contentStr); }else{ $resultStr = $this->transmitText($object, $contentStr); } return $resultStr; } //回复文本消息 private function transmitText($object, $content) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content); return $resultStr; }
//回复图文 private function transmitNews($object, $arr_item) { if(!is_array($arr_item)) return;
$itemTpl = " <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item>"; $item_str = ""; foreach ($arr_item as $item) $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
$newsTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <Content><![CDATA[]]></Content> <ArticleCount>%s</ArticleCount> <Articles> $item_str</Articles> </xml>";
$resultStr = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item)); return $resultStr; } //音乐消息 private function transmitMusic($object, $musicArray, $flag = 0) { $itemTpl = "<Music> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music>";
$item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);
$textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[music]]></MsgType> $item_str <FuncFlag>%d</FuncFlag> </xml>";
$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag); return $resultStr; } }?>
- 微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件
- 微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件
- 微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件
- Java微信公众平台开发(五)——文本及图文消息回复的实现
- 微信公众平台开发之文本自动回复
- 微信公众平台开发之用数据库实现多图文回复-php(四)
- 微信公众平台 自动回复图文消息
- 微信公众平台 回复图文信息方法优化(PHP)
- 微信公众平台 回复图文信息方法优化(PHP)
- 微信公众平台开发模式,成为开发者,实现自动回复和用户的关注事件的监听
- 微信公众平台 回复图文
- 微信公众平台开发者模式(2)JAVA自动回复文本消息及多图文消息
- 微信公众号开发之文本消息自动回复
- 微信公众平台 php自动回复时中文乱码
- 微信公众平台开发:进阶篇(微信机器人:自动匹配WordPress文章回复图文信息)
- 微信公众平台配置服务器之后实现自动回复
- 微信公众平台开发:基础篇(微信公众平台设置关键词自动回复)
- 微信公众平台自动回复详解
- CSS中overflow的含义与属性
- C#一个完整的电子邮件操作类
- C#构造函数的重载的几种方式
- jquery左侧导航网页菜单
- 让你的Visual Studio 2010自动添加头部注释信息
- 微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件
- Android Rom修改制作工具软件集合
- android rom制作之bootimg的详细介绍和使用
- 搜索文本框带提示点击消失解决方法
- XHTML Strict和Transitional 的区别
- 【java performance】如果只是查找单个字符的话,用charAt()代替startsWith()
- GBK与UTF-8的区别
- 给Visual Studio 2010添加Windows Phone 7模板
- C# SQLite 简单封装