微信公众号开发者接入

首先给自己搞个服务器(微信接入需要拥有自己的服务器资源,就是外网服务器,可以给别人访问的)
我购买的是阿里云的服务器(最低配置)
服务器系统为:win2012数据中心版

微信公众号开发者接入_第1张图片
阿里云服务器

服务器环境为:jdk1.7+tomcat7解压版
开发框架:springmvc+spring+mybatis
构建:maven

微信公众号开发者接入_第2张图片
我的结构

在这里不解释如何搭建ssm,网上很多教程。

我的接入方法

微信公众号开发者接入_第3张图片
接入方法

我的接入口为:weixin,为什么设置method为get以及post是因为微信接入的时候发的是get请求,而如果是消息类型的,发的是post请求。
为什么我用PrintWriter来返回echostr而不是用@ResponseBody来返回,是因为如果返回的是@ResponseBody,它默认返回的是json格式,会给echostr加上双引号,这样的话,微信会判断为不相同而接入不成功。
如果要让它不加上双引号,可以给spring-mvc.xml加上

微信公众号开发者接入_第4张图片
字符串不加双引号
    <bean id="mappingJackson2HttpMessageConverter"  
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
        <property name="supportedMediaTypes">  
            <list>  
                <value>text/json;charset=UTF-8value>  
                  
            list>  
        property>  
    bean>  
    <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter" />  

    <bean  
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
                <ref bean="mappingJackson2HttpMessageConverter" />  
                <ref bean="stringHttpMessageConverter" />  
            list>  
        property>  
    bean>

加上这个配置后,就不会有双引号,可是我发现,依旧是接入失败,所以我尝试使用PrintWriter返回echostr却成功,我初出茅庐,就不深究了,能解决就行。

如何判断是不是微信发来的消息

直接贴源码,为什么这么做自己研究

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;

public class utils {

    private final static String TOKEN = "此处填写你在微信配置的token";

    public static String SHA1(String decript) {
        try {
            MessageDigest digest = java.security.MessageDigest
                    .getInstance("SHA-1");
            digest.update(decript.getBytes());
            byte messageDigest[] = digest.digest();
            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 "";
    }

    public static boolean checkWeixinReques(String signature,String timestamp,String nonce) {
        if (signature != null && timestamp != null && nonce != null) {
            String[] strSet = new String[] { TOKEN, timestamp, nonce };
            java.util.Arrays.sort(strSet);
            String key = "";
            for (String string : strSet) {
                key = key + string;
            }
            L.i(key);
            String pwd = utils.SHA1(key);
            L.i(pwd);
            L.i(signature);
            return pwd.equals(signature);
        } else {
            return false;
        }
    }
}

登录微信公众平台

打开 开发-->基本配置

微信公众号开发者接入_第5张图片
打开基本配置

点击修改配置,填入信息。

微信公众号开发者接入_第6张图片
修改配置

密文还是明文随便你,看需求。
填写完了之后,点击提交,如果成功的话会提示配置成功!
如果失败,看看有没有跑你服务器的weixin.do(为什么是.do后缀名是因为我配置的就是.do访问,这个网上查,改成什么随便你)

你可能感兴趣的:(后台)