java微信公众号开发01 - 微信服务器的接入和验证
来源:互联网 发布:视频拦截广告软件 编辑:程序博客网 时间:2024/05/14 12:56
首先本地创建一个web项目(本例中项目名称为:Weixin)
1.1 由于微信服务器将发送GET请求到应用上,所以首先创建WeixinServlet来处理这个验证请求。
1
2
3
4
5
6
7
8
9
10
11
12
13
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
//验证服务器地址有效性:微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数
String signature = request.getParameter(
"signature"
);
String timestamp = request.getParameter(
"timestamp"
);
String nonce = request.getParameter(
"nonce"
);
String echostr = request.getParameter(
"echostr"
);
PrintWriter out = response.getWriter();
if
(CheckUtil.checkSignature(signature, timestamp, nonce)){
out.print(echostr);
}
response.getWriter().append(
"Served at: "
).append(request.getContextPath());
}
1.2 微信服务器有效性校验的工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public
class
CheckUtil {
private
static
final
String token =
"nifury"
;
public
static
boolean
checkSignature(String signature,String timestamp,String nonce){
String[] arr =
new
String[]{token,timestamp,nonce};
//排序
Arrays.sort(arr);
//生成字符串
StringBuffer content =
new
StringBuffer();
for
(
int
i =
0
; i < arr.length; i++) {
content.append(arr[i]);
}
//sha1加密
String temp = getSha1(content.toString());
return
temp.equals(signature);
}
public
static
String getSha1(String str){
if
(
null
== str ||
0
== str.length()){
return
null
;
}
char
[] hexDigits = {
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
try
{
MessageDigest mdTemp = MessageDigest.getInstance(
"SHA1"
);
mdTemp.update(str.getBytes(
"UTF-8"
));
byte
[] md = mdTemp.digest();
int
j = md.length;
char
[] buf =
new
char
[j *
2
];
int
k =
0
;
for
(
int
i =
0
; i < j; i++) {
byte
byte0 = md[i];
buf[k++] = hexDigits[byte0 >>>
4
&
0xf
];
buf[k++] = hexDigits[byte0 &
0xf
];
}
return
new
String(buf);
}
catch
(NoSuchAlgorithmException e) {
e.printStackTrace();
return
null
;
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
return
null
;
}
}
}
1.3 web.xml中配置好映射
1
2
3
4
5
6
7
8
9
<
servlet
>
<
servlet-name
>WeixinServlet</
servlet-name
>
<
servlet-class
>com.nifury.test.WeixinServlet</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>WeixinServlet</
servlet-name
>
<
url-pattern
>/wx.do</
url-pattern
>
</
servlet-mapping
>
结果:本地能访问localhost:8080/Weixin/wx.do即可(没配置具体页面所以返回500)。
2. 将本地地址映射到公网
2.1 下载花生壳客户端,注册登录并开启映射功能(映射需要身份认证,会收几块钱认证费用);认证成功之后会得到一个域名,这个就可以当成是自己的服务器地址了。
2.2 在花生壳中新建映射,把项目地址映射的公网,内网主机地址可在windows的命令处理程序cmd中输入ipconfig查看(ipv4地址)
结果:将本地地址中localhost:8080换成花生壳的域名,就得到上一步所创建应用的公网地址。如果访问结果跟第1步的结果相同就算配置成功。
3.填写微信平台配置信息
3.1 申请微信公众平台测试账号登陆(个人申请的公众号只能开启一小部分的微信接口,测试号可获得服务号所有权限和接口);
3.2 在接口配置信息中填写第2步中的应用公网地址,token为工具类中自己设置的token,确认即可。
部分代码参考慕课网java微信公众号开发课程,Nifury原创整理,转载请注明来源
0 0
- java微信公众号开发01 - 微信服务器的接入和验证
- java微信公众号开发 - 微信服务器的接入和验证
- 接入微信公众号:验证服务器地址的有效性
- 微信开发 公众号接入服务器
- 微信开发(一)公众号接入服务器
- 用java开发微信公众号:公众号接入和access_token管理(二)
- 用java开发微信公众号:公众号接入和access_token管理(二)
- 微信公众号开发之接入
- 微信公众号开发接入指南
- 微信公众号开发--接入
- 1、微信公众号开发-接入
- 微信公众号开发第一步 - 接入
- 微信公众号开发-接入指南
- php之微信公众号开发(一)接入微信验证和创建自定义菜单
- java 微信公众号开发(一)--微信公众号接入
- 微信公众平台接口开发-接入验证测试
- 使用Golang开发微信公众平台----接入验证
- 微信公众平台开发2-接入指南(验证服务器地址有效性)
- Android源码编译整理总结
- Java 反射
- CGContextRef用法
- IOS Image I/O编程指南
- 字符串函数的使用...strcat...puts...gets...strlen...strcmp...strcpy
- java微信公众号开发01 - 微信服务器的接入和验证
- Cache (computing) && CPU Cache
- 有感"全球癌症热点图:患癌负担转至发展中国家"
- 学习笔记-php和js之间的相互调用
- ES6学习——新的语法:Arrow Functions
- css继承
- 如何在QML中使用不同的字体(font)
- 关于三位一体2的渲染(网摘)
- C语言union(联合体 共用体)