在微信公众号开发中,我们需要接入微信服务器,让微信服务器与我们自己的服务器建立安全信道,建立信任。微信服务器向我们的服务器发送请求的时候会携带三个参数timestamp=时间戳&nonce=随机字符串&signature=签名。我们可以通过timestamp和nonce以及token来算出一个signature与传入的签名比较,如果相等则是微信合法请求,否则就不是合法请求。token(令牌)是微信端生成的,只有我们自己和微信知道,token不泄露给他人,他人是伪造不了微信请求的。本文将介绍以下内容:“在微信公众平台的服务器配置里配置好我们的服务器接口”、“获取微信服务器传递过来的参数”、“将token、timestamp、nonce三个参数进行字典序排序”、“将三个参数字符串拼接成一个字符串进行sha1加密”、“开发者获得加密后的字符串可与signature对比,标识该请求来源于微信”。
1、在微信公众平台的服务器配置里配置好我们的服务器接口。
/** 建立微信服务器与NBR服务器的安全信道,让它们建立信任 请求由微信服务器发送到NBR。 */
@RequestMapping(method = { RequestMethod.GET })
public void connectWxServerToNBR(HttpServletRequest request, HttpServletResponse response, PrintWriter out) {
if (!canCallCurrentAction(request.getSession(), BaseAction.EnumUserScope.ANYONE.getIndex())) {
logger.debug("无权访问本Action");
return;
}
logger.info("微信服务器开始建立与N