一、开发环境搭建
SpringBoot 2.0 + maven + mysql
二、代码实现
1、首先我们要写一个微信托管的验签接口,请求方式为GET,这部分代码主要是将微信给的参数使用sha1加密,然后返回。
/**
* 微信托管时进行的验签验证
* @param signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数
* @param timestamp 时间戳
* @param nonce 随机数
* @param echostr 随机字符串
* @return
*/
@GetMapping("/index")
@ResponseBody
public String checkReceiveUrl(@RequestParam String signature, @RequestParam String timestamp, @RequestParam String nonce, @RequestParam String echostr) {
return wechatService.checkReceiveMessageUrl(signature, timestamp, nonce, echostr);
}
/**
* 微信验签
*
* @param signature
* @param timestamp
* @param nonce
* @param echostr
* @return
*/
public String checkReceiveMessageUrl(String signature, String timestamp, String nonce, String echostr) {
List<String> params = new ArrayList<>();
params.add(mp.getPub().getToken());
params.add(timestamp);
params.add(nonce);
Collections.sort(params);
String sign = DigestUtils.sha1Hex(params.get(0) + params.get(1) + params.get(2));
if (sign.equals(signature)) {
return echostr;
}
return "";
}
2、服务托管
登录微信公众号后台,选择基本配置,修改服务器地址,即为上面的接口地址,填上Token和EncodingAESKey,都可以手动填写,EncodingAESKey也可以自动生成。消息加解密方式选择明文模式。
示例如下:
点击启用,会弹出提示需要进行服务器验证,中间有个txt需要下载,下载之后放到ng根目录,让域名加这个文件名可以直接访问即可。
配置好之后再选择启用,提示成功表示服务器托管成功。