(转载)微信公众平台 - 实例(未验证)
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.关注公众账号:****
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
|
?>
|
(转载)微信公众平台 - 实例(未验证)相关推荐
- Java微信公众号高级 微信墙,JAVA折腾微信公众平台(Token验证)
JAVA折腾微信公众平台(Token验证) JAVA折腾微信公众平台(Token验证) 2019独角兽企业重金招聘Python工程师标准>>> 最近微信的公众平台比较火,于是我也想弄 ...
- 微信公众平台开发(5)--验证消息的确来自微信服务器
点此查看 微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载 本文目录 1. 前言 2. 构建项目 2.1 构建SpringBoot项目 2.2 编写配置文件 2.3 编写启动类 3 ...
- Web API实现微信公众平台开发-服务器验证
背景 最近开发微信公众号相关接口,在这里记录下微信公众号相关各项功能的实现. 先决条件 1.一台可部署web服务的服务器或者云平台(本地可以搞个花生壳域名). 2.一个可以正常使用的微信公众账号,开始 ...
- java微信token验证_JAVA折腾微信公众平台(Token验证)
最近微信的公众平台比较火,于是我也想弄个微信来玩玩.如何注册微信公众号?点击之后就可以看到官方的答案了(额,比较坑爹). 注册之后,可以选择编辑模式和开发模式,这里要说的是开发模式. 首先要开启开发模 ...
- java微信token验证_JAVA折腾微信公众平台(Token验证)[转]
BAE的JAVA还在内测的时候,抱着好奇的态度发邮件申请了内测权限,当时折腾了一天,然后就没折腾了.现在BAE的JAVA都已经正式开放使用了,我又蛋疼的想写点什么,否则每天仅仅只是工作上的使用,是得不 ...
- ASP.NET MVC4 微信公众平台开发测试一: 验证
ASP.NET MVC4 微信公众平台开发测试一: 验证 背景,想做一个微信公众号的自动回复系统,于是想动手写一下.记录这些,是一边写程序一边写在这里,也是记录一下自己的思路. 微信公众平台开发时,需 ...
- VB.net 微信公众平台开发(一) Token验证
登录https://mp.weixin.qq.com/ 后,在公众平台后台管理页面 – 开发者中心页,点击"修改配置"按钮,填写URL.Token和EncodingAESKey,其 ...
- 由SSL证书引发的微信公众平台token验证失败问题
起因 第一次尝试用java去搭建一个微信公众平台,在验证token的时候遇到了各式各样的问题,很多在网上也没有找到比较合适的说法只能自己一步步尝试,在这里记录分享一下也希望其他的朋友能在遇到类似的问题 ...
- 【Java微信公众平台开发模式+自定义按钮源码】
首先,想用开放模式需要先成为开发者.成为开发者有两种写法. 一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串: 二是:通过Servlet.d ...
最新文章
- 引导修复_怎么使用bcdrepair引导修复系统【详细步骤】
- python网络爬虫权威指南 百度云-Python网络爬虫权威指南 PDF 第2版
- python 美团api接口对接_震惊!SpaceX火箭数据开放API接口,可用Python进行数据分析...
- linux下多种锁的比较
- 空间谱专题08:相位模糊
- Maven Git发布
- 21岁还可以学php开发吗,PHP已经21岁了!
- 深圳警方出手!“钱爸爸”涉嫌集资诈骗 已累计冻结2.13亿元
- Spark学习-SparkSQL--03-SparkSQL CLI 建表查询出问题
- 架构解密从分布式到微服务:微服务架构到底是什么?
- SpringBoot项目中图片的引用
- mysqld got signal 11处理
- 苹方字体 android,iOS 9“苹方”字体像安卓被吐槽
- 视频内容理解相关方法
- 编译bib文件,报错repeated entry
- 【BZOJ4453】cys就是要拿英魂!
- 2.4G蓝牙耳机等穿戴蓝牙设备贴片天线方案 CA-C01
- 新手如何对文件进行简单的上传
- 柳传志:联想发展过程中的三大突破
- 2021巢湖第一中学高考成绩查询,2021年巢湖高中学校排名及录取分数线排名