资源简介

微信公众平台,开发者模式下的Java实现。实现菜单,自动回复,关注事件等!利用SpringMVC框架实现。如有疑问,可以关注我的博客~

资源截图

代码片段和文件信息

package com.duowan.yymobilegame.controller.wechat;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.duowan.yymobilegame.exception.YymobilegameException;
import com.duowan.yymobilegame.model.GTextInfo;
import com.duowan.yymobilegame.model.WeChatReceiveMsg;
import com.duowan.yymobilegame.service.GTextInfoService;

/**
 * 微信设置控制器
 * @author Administrator
 *
 */
@RequestMapping(“/client“)
@Controller
public class WeChatController{

private static final Log log = LogFactory.getLog(WeChatController.class);
public final String TOKEN = “ziqiangbuxi“;
private final String SUBSCRIBE_EVENT = “subscribe“;//订阅事件
private final String MENU_CLICK_EVENT = “CLICK“;
@Autowired
private GTextInfoService gTextInfoService;//图文信息服务
/**
 * 验证微信URL的合法性,申请开发者模式
 * @param request
 * @param response
 * @throws IOException 
 */
@RequestMapping(“/valid.do“)
public void weChatService(HttpServletRequest request HttpServletResponse response InputStream is) throws IOException{
String method = request.getMethod();
if(method.equals(“GET“)){
valid(request response);
}else{
doPost1(request response is);
}

}

/**
 * 微信服务器验证
 * @param request
 * @param response
 */
private void valid(HttpServletRequest request HttpServletResponse response){
String signature = request.getParameter(“signature“);//微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
String timestamp = request.getParameter(“timestamp“);//时间戳
String nonce = request.getParameter(“nonce“);//随机数
String echostr = request.getParameter(“echostr“);//随机字符串

try {
boolean result =  checkSignature(signature timestamp nonce TOKEN);
if(result == true){
PrintWriter pw = response.getWriter();
pw.write(echostr);
}
}catch (Exception e) {
log.error(e.getMessage() e);
}
}

/**
 * 响应微信发来的消息
 * @param request
 * @param response
 */
private void doPost1(HttpServletRequest request HttpServletResponse response InputStream is){
try {
WeChatReceiveMsg msg = getMsg(is);
String msgType = msg.getMsgType();//获得信息类型
if(msgType == null || msgType.length() == 0)
throw new YymobilegameException(“----------公众平台服务器返回的信息不实标准格式,请检查!-

评论

共有 条评论