第一步:必须拥有自己的服务器,有外网ip,域名要不要无所谓,像一些云服务器什么的都有免费体验的活动,可以去试一试;
第二步:登录自己公众号管理后台,如下图:
第三步:编写java代码,处理微信验证请求,这里的端口必须使用80端口,我设置的请求路径为http://ip/wechat
这里我简单地使用了Servlet,代码如下:
//微信验证默认走的get方法,下面几个参数是微信验证是传过来的
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
System.out.println("进入了验证");
// 微信加密签名
String signature = request.getParameter("signature");
// 随机字符串
String echostr = request.getParameter("echostr");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
String bigStr = WxUtils.sort(TOKEN, timestamp, nonce);
// SHA1加密
String digest = WxUtils.SHA1(bigStr);
// 确认请求来至微信
if (digest.equals(signature)) {
response.getWriter().print(echostr);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter printWriter;
System.out.println("进入聊天");
//进入聊天
printWriter=response.getWriter();
// 接收消息并返回消息
// 调用核心服务类接收处理请求
String respXml = CoreService.processRequest(request);
System.out.println("最终xml:"+respXml);
printWriter.print(respXml);
printWriter.flush();
printWriter.close();
}
其中用到的加密类也一起贴出来
public class WxUtils {
/**
* @Description: 排序方法
* @author Mr.chen
* @date 2017-3-7 下午01:31:28
*/
public static String sort(String token, String timestamp, String nonce) {
String[] strArray = { token, timestamp, nonce };
Arrays.sort(strArray);
StringBuilder sbuilder = new StringBuilder();
for (String str : strArray) {
sbuilder.append(str);
}
return sbuilder.toString();
}
/**
* @Description: 加密
* @author Mr.chen
* @date 2017-3-7 下午01:31:40
*/
public static String SHA1(String decript) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.update(decript.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
}
hexString.append(shaHex);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
}
下面是web.xml配置
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Start</servlet-name>
<servlet-class>cy.wx.servlevt.WeChatApi</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Start</servlet-name>
<url-pattern>/wechat</url-pattern>
</servlet-mapping>
代码弄完以后,就只剩下将代码编译放到服务器上面了,我这里用的是tomcat,将tomcat默认的8080端口改为80,启动tomcat后就可以在微信公众号后台点击验证按钮验证了,快去试试吧。。。。。。。。。。。。。。