1. 程式人生 > >微信公眾號開發者接入

微信公眾號開發者接入

首先給自己搞個伺服器(微信接入需要擁有自己的伺服器資源,就是外網伺服器,可以給別人訪問的)
我購買的是阿里雲的伺服器(最低配置)
伺服器系統為:win2012資料中心版


阿里雲伺服器

伺服器環境為:jdk1.7+tomcat7解壓版
開發框架:springmvc+spring+mybatis
構建:maven


我的結構

在這裡不解釋如何搭建ssm,網上很多教程。

我的接入方法


接入方法

我的接入口為:weixin,為什麼設定method為get以及post是因為微信接入的時候發的是get請求,而如果是訊息型別的,發的是post請求。
為什麼我用PrintWriter來返回echostr而不是用@ResponseBody來返回,是因為如果返回的是@ResponseBody,它預設返回的是json格式,會給echostr加上雙引號,這樣的話,微信會判斷為不相同而接入不成功。
如果要讓它不加上雙引號,可以給spring-mvc.xml加上


字串不加雙引號
    <bean id="mappingJackson2HttpMessageConverter"  
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
        <property name="supportedMediaTypes">  
            <list>  
                <value>text/json;charset=UTF-8</value
>
<!-- <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> --> </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;
        }
    }
}

登入微信公眾平臺

開啟 開發-->基本配置


開啟基本配置

點選修改配置,填入資訊。


修改配置

密文還是明文隨便你,看需求。
填寫完了之後,點選提交,如果成功的話會提示配置成功!
如果失敗,看看有沒有跑你伺服器的weixin.do(為什麼是.do字尾名是因為我配置的就是.do訪問,這個網上查,改成什麼隨便你)