码迷,mamicode.com
首页 > 微信 > 详细

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

时间:2015-08-06 09:35:30      阅读:1109      评论:0      收藏:0      [点我收藏+]

标签:

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

首先需要的是腾讯的一些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 = "UunnFe53Kkt0Nfqyssufqym";// 这个Token是随机生成,但是必须跟企业号上的相同
	String sCorpID = "wx59fec1f586c91217";// 这里是你企业号的CorpID
	String sEncodingAESKey = "oPnaEVwiDyqSToFdmucfNG9RYJKgZk2njg6K9kKXTFc";// 这个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验证

标签:

原文地址:http://my.oschina.net/u/2259804/blog/488471

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!