网站推广.NET

网站推广.NET

天天AV - 微信公众平台 - 实例

来源:互联网

如何部署自己的公众平台: 
    1.打开http://mp.weixin.qq.com 注册/登录 
    2.进入高级功能菜单,选择编辑模式或开发者模式(本例子属于开发者模式-需要自己拥有服务器) 
    3.进入开发者模式,注册成为开发者,配置接口信息。如: 
        url:http://192.168.1.1/wx_sample.php 
        token:weixin (自己填写一个) 
    4.打开wx_sample.php    $wechatobj->valid(); 这个方法进行验证 
    5.验证成功,关闭wx_sample.php    $wechatobj->valid(); 
    6.马上使用手机,访问属于自己的公众平台吧 


本例代码测试方法: 
    1.打开手机微信 
    2.关注公众账号:天天av 
    3.发送一条信息:q北京遇上西雅图 
    4.返回一条磁力链接 
    5.系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看 

原理: 

    1.接收用户数据,如:q北京遇上西雅图 

    2.到bt搜索引擎进行查询数据 

    3.返回一条磁力链接 

    ps:由于没有申请到内测资格,有很多功能都受到限制,如:5秒超时解决不了, 

    无法主动推送,批量推送,模拟登录又不方便等等。。。 

<?php/**  * wechat php test  */header(&#39;Content-Type:text/html;charset=utf8&#39;);date_default_timezone_set(&#39;RPC&#39;); //define your tokendefine("TOKEN", "2snH21PBqF7UK");//自定义$wechatObj = new wechatCallbackapiTest();//$wechatObj->valid();//第一次验证token时使用$wechatObj->responseMsg(); class wechatCallbackapiTest{    private $keyword;         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, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);                $fromUsername = $postObj->FromUserName;                $toUsername = $postObj->ToUserName;                $this->keyword = trim($postObj->Content);                $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(!empty( $this->keyword ))                {                    if($this->keyword == 999){                        $msgType = "text";                        $contentStr = &#39;当您搜索:q北京遇上西雅图,系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看。&#39;;//&#39;参数:1, 按下载数查询;参数:2, 按时间查询;参数:5, 按质量查询; 精确查询请添加双引号; 例如: q"北京遇上西雅图"  1&#39;;                        echo $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                        exit;                    }                    preg_match(&#39;#^q(.*)#&#39;, $this->keyword, $str);                    if($str[1]){                        $data = $this->getQueryParam($str[1]);                        $contents = $this->getQueryList($data);                        $resutl = $this->getQueryResult($contents);                        $link = str_replace(&#39;&&#39;,&#39;&&#39;,urldecode($resutl[1]));//组装磁力链接                        if($link){                            $msgType = "text";                            $contentStr = $link;                            echo $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                        }                    }else{                        $msgType = "text";                        $contentStr = &#39;请您输入q进行查询,例如: q北京遇上西雅图     更多帮助请输入999&#39;;                        echo $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                    }                }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;        }    }         //返回q=查询    function getQueryResult($contents){        $result = array();        preg_match(&#39;#<a onclick="fclck\(this.href\)" href="(.*)" title="Download via magnet-link">\[magnet-link\]</a>#iUs&#39;, $contents, $content);        $result = $content;        return $result;    }              //获取btdigg.org 的查询数据    function getQueryList($data){        $data[&#39;order&#39;] = $data[&#39;order&#39;] ? $data[&#39;order&#39;] : 0;        $data[&#39;p&#39;] = 0;        $ch = curl_init();         curl_setopt($ch, CURLOPT_URL, &#39;https://btdigg.org/search?&#39;.http_build_query($data));        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_USERAGENT, &#39;Google Bot&#39;);        curl_setopt($ch, CURLOPT_TIMEOUT, 4);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);                 $result = curl_exec($ch);        curl_close($ch);        return $result;    }     //获取查询参数    function getQueryParam($str){        $data = array();        $string = explode(&#39; &#39;, $str);                 //是数组 and 最后一个数组是数字        $last = array_pop($string);        if(is_numeric($last)){            $data[&#39;q&#39;] = implode(&#39; &#39;, $string);            $data[&#39;order&#39;] = $last;        }else{            $data[&#39;q&#39;] = $str;        }        return $data;    }     } ?>

标签: 天天av