微信企业号开发 公众平台 token验证

百度了很多,发现很多旧的,要么就是不完整。

首先需要的是腾讯的一些java文件(主要是加解密用),放到自己的包下即可。

然后自己定义个servlet,token和随机数必须和微信平台上的一致。

package com.qj;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.qq.weixin.mp.aes.AesException;
import com.qq.weixin.mp.aes.WXBizMsgCrypt;


/**
 * 核心请求处理类
 * 
 * @author heqian
 * 
 */
public class WechatCallbackApi extends HttpServlet {
	private static final long serialVersionUID = 4440739483644821986L;
	String sToken = "UunnFe53ufqym";// 这个Token是随机生成,但是必须跟企业号上的相同
	String sCorpID = "wx59fec11217";// 这里是你企业号的CorpID
	String sEncodingAESKey = "oPnaEVwiYJKgZk2njg6K9kKXTFc";// 这个EncodingAESKey是随机生成,但是必须跟企业号上的相同

	/**
	 * 确认请求来自微信服务器
	 * 
	 * @throws IOException
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		// 微信加密签名
		String sVerifyMsgSig = request.getParameter("msg_signature");
		// 时间戳
		String sVerifyTimeStamp = request.getParameter("timestamp");
		// 随机数
		String sVerifyNonce = request.getParameter("nonce");
		// 随机字符串
		String sVerifyEchoStr = request.getParameter("echostr");
		String sEchoStr; // 需要返回的明文
		PrintWriter out = response.getWriter();
		WXBizMsgCrypt wxcpt;
		try {
			wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);
			sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,
					sVerifyNonce, sVerifyEchoStr);
			// 验证URL成功,将sEchoStr返回
			out.print(sEchoStr);
		} catch (AesException e1) {
			e1.printStackTrace();
		}
	}

	/**
	 * 处理微信服务器发来的消息
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO 消息的接收、处理、响应
	}

}

然后就是配置servlet:

<servlet>
		<servlet-name>wechat</servlet-name>
		<servlet-class>com.qj.WechatCallbackApi</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>wechat</servlet-name>
		<url-pattern>/wechat</url-pattern>
	</servlet-mapping>

然后运行(需要外网可访问的ip地址,可以放到第三方,新浪云等)

然后复制URL,验证即可。验证的URL要在域名后加上你servlet的url-pattern.  例: www.xxxx.com/wechat

工程源码及微信开发包

你可能感兴趣的:(微信企业号开发 公众平台 token验证)