您的位置:首页 > 移动开发 > 微信开发

微信企业号开发(二)-回调接口

2015-11-08 19:03 806 查看
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、注意!!!确保自己电脑上或服务器上的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目录下覆盖原来文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: