微信公眾號開發者接入
阿新 • • 發佈:2019-01-06
首先給自己搞個伺服器(微信接入需要擁有自己的伺服器資源,就是外網伺服器,可以給別人訪問的)
我購買的是阿里雲的伺服器(最低配置)
伺服器系統為: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訪問,這個網上查,改成什麼隨便你)