如何部署自己的公众平台:
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.关注公众账号:****
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.关注公众账号:****
3.发送一条信息:q北京遇上西雅图
4.返回一条磁力链接
5.系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看
原理:
1.接收用户数据,如:q北京遇上西雅图
2.到bt搜索引擎进行查询数据
3.返回一条磁力链接
ps:由于没有申请到内测资格,有很多功能都受到限制,如:5秒超时解决不了,
无法主动推送,批量推送,模拟登录又不方便等等。。。
4.返回一条磁力链接
5.系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看
原理:
1.接收用户数据,如:q北京遇上西雅图
2.到bt搜索引擎进行查询数据
3.返回一条磁力链接
ps:由于没有申请到内测资格,有很多功能都受到限制,如:5秒超时解决不了,
无法主动推送,批量推送,模拟登录又不方便等等。。。
[PHP]代码
001 | <?php |
002 | /** |
003 | * wechat php test |
004 | */ |
005 | header( 'Content-Type:text/html;charset=utf8' ); |
006 | date_default_timezone_set( 'RPC' ); |
007 | |
008 | //define your token |
009 | define( "TOKEN" , "2snH21PBqF7UK" ); //自定义 |
010 | $wechatObj = new wechatCallbackapiTest(); |
011 | //$wechatObj->valid();//第一次验证token时使用 |
012 | $wechatObj ->responseMsg(); |
013 | |
014 | class wechatCallbackapiTest |
015 | { |
016 | private $keyword ; |
017 | |
018 | public function valid() |
019 | { |
020 | $echoStr = $_GET [ "echostr" ]; |
021 | |
022 | //valid signature , option |
023 | if ( $this ->checkSignature()){ |
024 | echo $echoStr ; |
025 | exit ; |
026 | } |
027 | } |
028 | |
029 | public function responseMsg() |
030 | { |
031 | //get post data, May be due to the different environments |
032 | $postStr = $GLOBALS [ "HTTP_RAW_POST_DATA" ]; |
033 | |
034 | //extract post data |
035 | if (! empty ( $postStr )){ |
036 | |
037 | $postObj = simplexml_load_string( $postStr , 'SimpleXMLElement' , LIBXML_NOCDATA); |
038 | $fromUsername = $postObj ->FromUserName; |
039 | $toUsername = $postObj ->ToUserName; |
040 | $this ->keyword = trim( $postObj ->Content); |
041 | $time = time(); |
042 | $textTpl = "<xml> |
043 | <ToUserName><![CDATA[%s]]></ToUserName> |
044 | <FromUserName><![CDATA[%s]]></FromUserName> |
045 | <CreateTime>%s</CreateTime> |
046 | <MsgType><![CDATA[%s]]></MsgType> |
047 | <Content><![CDATA[%s]]></Content> |
048 | <FuncFlag>0</FuncFlag> |
049 | </xml>"; |
050 | if (! empty ( $this ->keyword )) |
051 | { |
052 | if ( $this ->keyword == 999){ |
053 | $msgType = "text" ; |
054 | $contentStr = '当您搜索:q北京遇上西雅图,系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看。' ; //'参数:1, 按下载数查询;参数:2, 按时间查询;参数:5, 按质量查询; 精确查询请添加双引号; 例如: q"北京遇上西雅图" 1'; |
055 | echo $resultStr = sprintf( $textTpl , $fromUsername , $toUsername , $time , $msgType , $contentStr ); |
056 | exit ; |
057 | } |
058 | preg_match( '#^q(.*)#' , $this ->keyword, $str ); |
059 | if ( $str [1]){ |
060 | $data = $this ->getQueryParam( $str [1]); |
061 | $contents = $this ->getQueryList( $data ); |
062 | $resutl = $this ->getQueryResult( $contents ); |
063 | $link = str_replace ( '&' , '&' ,urldecode( $resutl [1])); //组装磁力链接 |
064 | if ( $link ){ |
065 | $msgType = "text" ; |
066 | $contentStr = $link ; |
067 | echo $resultStr = sprintf( $textTpl , $fromUsername , $toUsername , $time , $msgType , $contentStr ); |
068 | } |
069 | } else { |
070 | $msgType = "text" ; |
071 | $contentStr = '请您输入q进行查询,例如: q北京遇上西雅图 更多帮助请输入999' ; |
072 | echo $resultStr = sprintf( $textTpl , $fromUsername , $toUsername , $time , $msgType , $contentStr ); |
073 | } |
074 | } else { |
075 | echo "Input something..." ; |
076 | } |
077 | |
078 | } else { |
079 | echo "" ; |
080 | exit ; |
081 | } |
082 | |
083 | } |
084 | |
085 | private function checkSignature() |
086 | { |
087 | $signature = $_GET [ "signature" ]; |
088 | $timestamp = $_GET [ "timestamp" ]; |
089 | $nonce = $_GET [ "nonce" ]; |
090 | |
091 | $token = TOKEN; |
092 | $tmpArr = array ( $token , $timestamp , $nonce ); |
093 | sort( $tmpArr ); |
094 | $tmpStr = implode( $tmpArr ); |
095 | $tmpStr = sha1( $tmpStr ); |
096 | |
097 | if ( $tmpStr == $signature ){ |
098 | return true; |
099 | } else { |
100 | return false; |
101 | } |
102 | } |
103 | |
104 | //返回q=查询 |
105 | function getQueryResult( $contents ){ |
106 | $result = array (); |
107 | preg_match( '#<a onclick="fclck\(this.href\)" href="(.*)" title="Download via magnet-link">\[magnet-link\]</a>#iUs' , $contents , $content ); |
108 | $result = $content ; |
109 | return $result ; |
110 | } |
111 | |
112 | |
113 | //获取btdigg.org 的查询数据 |
114 | function getQueryList( $data ){ |
115 | $data [ 'order' ] = $data [ 'order' ] ? $data [ 'order' ] : 0; |
116 | $data [ 'p' ] = 0; |
117 | $ch = curl_init(); |
118 | |
119 | curl_setopt( $ch , CURLOPT_URL, 'https://btdigg.org/search?' .http_build_query( $data )); |
120 | curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true); |
121 | curl_setopt( $ch , CURLOPT_USERAGENT, 'Google Bot' ); |
122 | curl_setopt( $ch , CURLOPT_TIMEOUT, 4); |
123 | curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, 0); |
124 | curl_setopt( $ch , CURLOPT_FRESH_CONNECT, true); |
125 | |
126 | $result = curl_exec( $ch ); |
127 | curl_close( $ch ); |
128 | return $result ; |
129 | } |
130 | |
131 | //获取查询参数 |
132 | function getQueryParam( $str ){ |
133 | $data = array (); |
134 | $string = explode ( ' ' , $str ); |
135 | |
136 | //是数组 and 最后一个数组是数字 |
137 | $last = array_pop ( $string ); |
138 | if ( is_numeric ( $last )){ |
139 | $data [ 'q' ] = implode( ' ' , $string ); |
140 | $data [ 'order' ] = $last ; |
141 | } else { |
142 | $data [ 'q' ] = $str ; |
143 | } |
144 | return $data ; |
145 | } |
146 | |
147 | } |
148 | |
149 | ?> |