1、根据内网映射外网,给自己的电脑配一个外网域名,http://blog.csdn.net/u014520797/article/details/49667217
2、填写信息
3、回调接口URL
package com.py.weixin.servlet;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.py.weixin.util.ParamesAPI;
import com.py.weixin.weixinapi.AesException;
import com.py.weixin.weixinapi.WXBizMsgCrypt;
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static Logger log = LoggerFactory.getLogger(CoreServlet.class);
/**
* 请求校验(确认请求来自微信服务器)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名
String msg_signature = request.getParameter("msg_signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
/*******pengyou 2015/10/16 start*********************************/
System.out.println("11CoreServlet doget msgSignature:"+msg_signature);
System.out.println("22CoreServlet doget nonce:"+nonce);
System.out.println("33CoreServlet doget timestamp:"+timestamp);
System.out.println("44CoreServlet doget解密前的 echostr:"+echostr);
// 打印请求地址
System.out.println("55CoreServlet doget request=" + request.getRequestURL());
PrintWriter out = response.getWriter();
// 请求校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
String echostr_ret=null;
try{
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(ParamesAPI.token,ParamesAPI.encodingAESKey,ParamesAPI.corpId);
// 验证URL函数
echostr_ret=wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);
}catch (AesException e) {
e.printStackTrace();
log.error("log 回调连接失败 1",e);
}
if (echostr_ret == null) {
// echostr_ret为空,赋予token
echostr_ret = ParamesAPI.token;
}
//回调的数据
out.print(echostr_ret);
out.close();
out = null;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
4、常量类
package com.py.weixin.util;
/**
* 参数API类
*/
public class ParamesAPI {
// token
public static String token = "Hs4MdnN4lygv2kmAZh";
// 随机戳
public static String encodingAESKey = "lKNJEA4vPm9BDbWUjA8txdLHpyUGKgzP8XU8gwkOKyj";
// 你的企业号ID
public static String corpId = "wx87be3e764a73bb42";
// 管理组的凭证密钥,每个secret代表了对应用、通讯录、接口的不同权限;不同的管理组拥有不同的secret
public static String corpsecret = "Bf7IkOMfDYFs4JJBztKub0z23pI9ZgIlL6sv1IjYkHmqeVEXkbxcR3drUkZ3iKGr";
// 应用ID,AgentId
public static String AgentId = "1";
}
5、corpId和corpsecret是管理组的凭证秘钥,可创建管理组,管理组秘钥各不相同。
6、成功回调
7、代码结构
8、代码地址:http://download.csdn.net/detail/u014520797/9252951
9、企业号demo,亲测可用:http://download.csdn.net/detail/u014520797/9726045
10、注意!!!确保自己电脑上或服务器上的jdk的中local_policy.jar和US_export_policy.jar已替换,否则将抛异常
异常java.security.InvalidKeyException:illegal Key Size的解决方案:
在官方网站下载JCE无限制权限策略文件(请到官网下载对应的版本, 例如JDK7的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html ):
或http://download.csdn.net/detail/u014520797/9174959
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安装了JRE,将两个jar文件放到%JRE_HOME% \lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。