微信公众号java开发

抽空总结一下微信公众号开发,用的是现在github最流行的wechatSDK:weixin-java-tools.这个包挺强大,不过缺点就是文档极其简陋,像我这样的lowB码农,用起来还是需要摸索。

首先总得看微信api,贴一下地址吧。https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

一开始看微信api必须用qq浏览器,现在不用了,谷歌就可以了。

1.接入微信公众平台开发

贴一下api里那个服务器地址接口。

@RequestMapping(value = "signature")
public void signature(HttpServletResponse response,HttpServletRequest request, String signature, String timestamp,String nonce, String echostr, String postData) throws IOException {
    response.setContentType("text/html;charset=utf-8");
    response.setStatus(HttpServletResponse.SC_OK);
    if (echostr != null || StringUtils.isNotBlank(echostr)) {
        boolean ck = weiXinMPService.checkSignature(signature, timestamp,nonce, echostr);
        if (ck) {
            ServletUtil.writerText(response, echostr);
        }
        return;
    }
    // 如果没有echostr,则说明传递过来的是用户消息,在解密方法里会自动验证消息是否合法
    WxMpConfigStorage defaultStorage = WeiXinMpInit.defaultStorage;
    String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type");
    if ("raw".equals(encryptType)) {
        // 明文传输的消息
        WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
        WxMpXmlOutMessage outMessage = weiXinMPService.analyticalData(inMessage);
        if (outMessage != null) {
            response.getWriter().write(outMessage.toXml());
        }
		return;
	}
    if ("aes".equals(encryptType)) {
        // 是aes加密的消息
        String msgSignature = request.getParameter("msg_signature");
        WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), defaultStorage, timestamp, nonce,msgSignature);
        WxMpXmlOutMessage outMessage = weiXinMPService.analyticalData(inMessage);
        response.getWriter().write(outMessage.toEncryptedXml(defaultStorage));
        return;
    }
	response.getWriter().println("不可识别的加密类型");
	}

 

你可能感兴趣的:(代码积累)