<?php
/*** wechat php test*///define your token
include_once('curl.php');
//定义一个钥匙常亮,用于服务器和微信平台连接钥匙
define("TOKEN", "weixin");
define("appID", "wxa930bb7f1fd4ecdb");
define("appsecret", "cf3d83eb7cc2d5b5cf2077549067e208");
$wechatObj = new wechatCallbackapiTest();//验证服务器和公众平台是否连接成功
//在服务器和公众平台验证成功之后把下面代码注释掉
//$wechatObj->valid();$wechatObj->responseMsg();$wechatObj->createMenu();class wechatCallbackapiTest
{ //验证public function valid(){$echoStr = $_GET["echostr"];//valid signature , option//验证成功 退出if($this->checkSignature()){header('content-type:text');echo $echoStr;exit;}}//公众平台发送给用户的信息public function responseMsg(){//get post data, May be due to the different environments//接收用户发送给公众平台信息 ,相当于$_POST,可以接受XML格式的数据$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,the best way is to check the validity of xml by yourself *///只解析XML数据的主体部分,防止XXE攻击libxml_disable_entity_loader(true);//通过simplexml解析XML数据$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//var_dump($postObj);die;//获取手机用户的OpenID$fromUsername = $postObj->FromUserName;//开发者微信号 $toUsername = $postObj->ToUserName;//发送的文本消息的关键字$keyword = trim($postObj->Content);//获取用户发送的消息类型$msgtype=$postObj->MsgType;//获取用户的事件$event=$postObj->Event;//获取事件的key值$eventkey=$postObj->EventKey;$time = time();//echo $keyword;die;//发送文本信息的字符串模板$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>"; //发送图片的字符串模板$imageTpl="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Image><MediaId><![CDATA[%s]]></MediaId></Image></xml>";//发送图文消息的字符串模板$newsTpl="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><ArticleCount>%s</ArticleCount><Articles>%s</Articles></xml> ";//发送音乐消息的字符串模板$musicTpl="<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></xml>";//判断用户发送过来的消息类型//如果公众号接收的是文本消息if($msgtype=='text'){if(!empty( $keyword )){//定义发送消息的类型if($keyword=='图片'){$msgType = "image";//公众平台发送给用户的信息$contentStr = ".jpg";//格式化字符串$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}elseif($keyword=='单图文'){$msgType='news';$counts=1;$contentStr="<item><Title><![CDATA[大家一起学习微信开发]]></Title> <Description><![CDATA[微信开发是未来的发展方向,大家研究研究吧]]></Description><PicUrl><![CDATA[.jpg]]></PicUrl><Url><![CDATA[.jpg]]></Url></item>";//格式化字符串$resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, $msgType,$counts,$contentStr);echo $resultStr;die;}elseif($keyword=='多图文'){$msgType='news';$counts=4;$contentStr='';for($i=2;$i<=5;$i++){$contentStr.="<item><Title><![CDATA[大家一起学习微信开发]]></Title> <Description><![CDATA[微信开发是未来的发展方向,大家研究研究吧。]]></Description><PicUrl><![CDATA[/{$i}.jpg]]></PicUrl><Url><![CDATA[/{$i}.jpg]]></Url></item>";}//格式化字符串$resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, $msgType,$counts,$contentStr);echo $resultStr;die;}elseif($keyword=='音乐'){$msgType='music';$title='冰雪奇缘主题曲';$description='原声大碟';$music_url='.mp3';$high_url='.mp3';//格式化字符串$resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType,$title,$description,$music_url,$high_url);echo $resultStr;die;}elseif($keyword=='帮助'){$msgType = "text";//公众平台发送给用户的信息$contentStr = "客官,回复【音乐】【多图文】【单图文】这些字,或者直接发送一张照片、一段录音、一段小视频、您现在的定位,有惊喜等着你哦,多玩伤身哦~~~";//格式化字符串$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}else{$msgType = "text";$curl=".aspx";$contentStr =curl($curl,array('txt'=>$keyword),'POST',false,false);$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}}else{$msgType = "text";$curl=".aspx";$contentStr =curl($curl,array('txt'=>$keyword),'POST',false,false);$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}}elseif($msgtype=='image'){//定义发送消息的类型$msgType = "text";//公众平台发送给用户的信息$contentStr = "您发送美女好漂亮啊~~~";//格式化字符串$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}elseif($msgtype=='voice'){//定义发送消息的类型$msgType = "text";//公众平台发送给用户的信息$contentStr = "您的声音好沧桑啊~~~啦啦啦~~";//格式化字符串$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}elseif($msgtype=='video'){//定义发送消息的类型$msgType = "text";//公众平台发送给用户的信息$contentStr = "呦,你发的什么片啊!哈哈~~~";//格式化字符串$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}elseif($msgtype=='location'){//定义发送消息的类型$msgType = "text";//公众平台发送给用户的信息$contentStr = "你怎么跑到火星啦!哈哈哈~~";//格式化字符串$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;die;}elseif($event=='CLICK'&&$eventkey=='最新产品'){//以图文消息回复最近的产品$msgType='news';//从数据库中查询最近5条数据//连接数据库mysql_connect('nvalglyjliip.rds.sae.sina:25398','root','rootroot');mysql_query('set names utf8');mysql_query('use weixin');$sql="select * from news limit 5";$counts=4;$res=mysql_query($sql);$contentStr='';while($row=mysql_fetch_assoc($res)){$contentStr.="<item><Title><![CDATA[{$row['name']}]]></Title> <Description><![CDATA[{$row['miaosu']}]]></Description><PicUrl><![CDATA[{$row['img']}]]></PicUrl><Url><![CDATA[]]></Url></item>"; }//格式化字符串$resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, $msgType,$counts,$contentStr);echo $resultStr;}elseif($event=='CLICK'&&$eventkey=='联系我们'){//以文本消息进行回复$msgType = "text";//公众平台发送给用户的信息$str="手机18665455185n email:358288718@qq";//格式化字符串$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $str);echo $resultStr;die;}//首次关注自动回复$msgType = "text";$contentStr = "您好,欢迎首次关注!";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;}else {echo "";exit;}}//菜单public function createMenu(){//$url='=client_credential&appid=wxa930bb7f1fd4ecdb&secret=cf3d83eb7cc2d5b5cf2077549067e208';$url='=client_credential&appid='.appID.'&secret='.appsecret.'';$file=file_get_contents($url);$arr=json_decode($file,true);$Accesstoken=$arr['access_token'];$url="=".$Accesstoken;$data='{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","url":"/"},{"name":"菜单","sub_button":[{ "type":"view","name":"搜索","url":"/"},{"type":"view","name":"视频","url":"/"},{"type":"click","name":"赞一下我们","key":"V1001_GOOD"}]}]}';$this->weixinPost($url,$data,"POST");}private function weixinPost($url,$data,$method){$ch = curl_init(); //1.初始化curl_setopt($ch, CURLOPT_URL, $url); //2.请求地址curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);//3.请求方式//4.参数如下curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_AUTOREFERER, 1);if($method=="POST"){//5.post方式的时候添加数据curl_setopt($ch, CURLOPT_POSTFIELDS, $data);}curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$tmpInfo = curl_exec($ch);//6.执行if (curl_errno($ch)) {//7.如果出错return curl_error($ch);}curl_close($ch);//8.关闭return $tmpInfo;}//验证private function checkSignature(){// you must define TOKEN by yourselfif (!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;}}
}?>
本文发布于:2024-01-30 23:47:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170662966723711.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |