现在的位置: 首页 > 综合 > 正文

(转载)微信公众平台 – 实例(未验证)

2013年03月10日 ⁄ 综合 ⁄ 共 5675字 ⁄ 字号 评论关闭
如何部署自己的公众平台:
    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秒超时解决不了,

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

 

[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('&amp;','&',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 ?>

抱歉!评论已关闭.