小雨的私人影院打通了微信公众号后台,大家关注zs40086回复电影关键词即可在手机端观看视频,下面分享下打通微信公众号和网站的通用代码
<?php define("TOKEN", "weixin"); //定义常量 $wechatObj = new wechatCallbackapiTest();//实例化类 if (isset($_GET['echostr'])) { //如果随机字符串存在 $wechatObj->valid(); //执行 wechatObj 类下的 valid 函数 }else{ $wechatObj->responseMsg(); //如果未得到随机字符串,执行 wechatObj 类下的 responseMsg 函数 } class wechatCallbackapiTest //定义类 { public function valid() //定义 valid 函数 { $echoStr = $_GET["echostr"]; //定义变量$echoStr 为获得的字符串 if($this->checkSignature()){ //调用当前类里的 chekSignature 函数 echo $echoStr; //输出 echoStr 的值 exit; } } private function checkSignature() //定义 checkSignature 函数 { $signature = $_GET["signature"]; //定义变量 signature 为获得的 signature $timestamp = $_GET["timestamp"]; //获取时间戳 $nonce = $_GET["nonce"]; //获取随机数 $token = TOKEN; //获得 token $tmpArr = array($token, $timestamp, $nonce);//定义数组 tmpArr 包含 token 值、时间戳、随机数 sort($tmpArr, SORT_STRING); //对数组进行升序排列 $tmpStr = implode( $tmpArr ); //将数组组合为字符串 $tmpStr = sha1( $tmpStr ); //计算字符串的 sha1 散列 if( $tmpStr == $signature ){ //如果计算的散列与获取的加密签名一致 return true; //返回真 }else{ return false; //不一致,返回假 } } public function responseMsg() //定义函数 responseMsg { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //首先接收上述原始 POST 数据 if (!empty($postStr)){ //如果接收到的数据不为空 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //将数据载入对象中,对象名为 SimpleXMLElement,将 CDATA 合并为文本节点 $fromUsername = $postObj->FromUserName; //取得 XML 数据包中 FromUserName 的值,赋给变量 fromUsername $toUsername = $postObj->ToUserName; //取得 XML 数据包中 ToUsername 的值,赋给变量 toUsername $keyword = trim($postObj->Content); //取得 XML 数据包中 content 的值,并移除字符串两侧的值 $time = time(); //取得 XML 数据包中的 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>";//将变量依次赋给新的 XML 变量 textTpl,注意里边将 to 和 from 调换 为什么多个%s? if($keyword == "?" || $keyword == "?") //判断用户发送的关键词是不是问号 { $msgType = "text"; //数据类型为文本方式 text $contentStr = date("Y-m-d H:i:s",time()); //回复的内为未当前时间 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); //sprintf 是把前边字符串里的%作为参数传递,第一个 textTpl 是前边定义的一串 xml,接下来 5 个参数是要填充进 XML 中进行替换的内容 echo $resultStr; //输出 XML,这时候微信服务器就会获得结果,并展示给用户 } }else{ //如果接收到的数据是空的 echo ""; //返回一个空值即可 exit; } } }
打通后,将里面的代码换成你开发的代码就可以了。
你可能对这些文章感兴趣:
- 七牛云如何更新七牛的缓存文件
- 没有任何前兆,我的文章被万网给和谐了。
- WordPress个人博客主题推荐(像书一样的Abook)
- WordPress复制文字自动添加版权信息
- WordPress控制指定页面和分类显示Div
- 替换xiu主题默认图标字体为Font Awesome
- WordPress快速建站第四讲:建站中空间购买解析绑定
- 总结个人博客赚钱方法渠道及常见不靠谱网赚思维
- WordPress文章跳转
- 万网虚拟主机添加https超详细攻略(最新ssl方案)
- 去掉滑动解锁,各种垃圾评论立马就来了
- 怎样才算一名合格的php工程师?
- 纯CSS给网站添加春节喜庆
- WordPress 4.9.1发布 解决3.7版本以来四大漏洞 新增小白福利
如有疑问,请前往问答中心反馈!
反馈