微信测试账号配置 ———接口配置信息
进入微信公众平台 获取测试账号appId 和 secretKey
配置接口信息
注意:
1.url的端口 http 为80 https 为443
2.Token为任意数字与字母组合且长度3-32
由于我的服务器80端口已经被nginx监听,所以做了一个nginx转发
我的wechatService服务监听的web端口为9080
server.port=9080
WechatContoller.java
package com.wl.wechat.contoller;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
/**
* Created by wl on 2021/4/10.
*/
@RestController
@RequestMapping("/wx")
public class WxController {
private static final String TOKEN = "wl123";
@RequestMapping("/receiveWx")
public void receiveWxToken(HttpServletRequest request,HttpServletResponse response) throws Exception{
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
System.out.println("signature: " + signature);
System.out.println("timestamp: " + timestamp);
System.out.println("nonce: " + nonce);
System.out.println("echostr: " + echostr);
String[] params = new String[]{nonce,timestamp,TOKEN};
Arrays.sort(params);
String signatureResult = DigestUtils.sha1Hex(params[0]+params[1] + params[2]);
//校验签名
if(!signatureResult.equals(signature)) {
throw new RuntimeException("signature is not the same wechat signature is " + signature + " signatureResult is " + signatureResult);
}
response.getWriter().write(echostr);
}
@RequestMapping("/login")
public String login(HttpServletRequest request){
return "ok";
}
}
nginx部分配置如下(一般nginx配置在/etc/nginx/nginx.conf 我的服务器为腾讯云ubuntu20 nginx配置在 /etc/nginx/sites-available/default)
upstream wechat_server{
server localhost:9080;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
location /wechat/ {
proxy_pass http://wechat_server/wechat/;
}
.....
}
上面配置是将 http://hostIp/wechat/的请求转发到 http://hostIp:9080/wechat/上
重启nginx 并且启动java 服务
sudo /etc/init.d/nginx reload
提交微信测试账号的 接口配置信息(Token需要与java程序中的TOKEN一致)
成功!
java日志如下
signature: e42508e3982e6f1c414fb4d2e1a857fdcdc31af1
timestamp: 1618138978
nonce: 1621993589
echostr: 4331993227658786679