百度了很多,发现很多旧的,要么就是不完整。
首先需要的是腾讯的一些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