1. 註冊申請公衆號
註冊公衆號主要的步驟在“選擇類型”,三種類型都有具體描述根據自己的實際情況進行選擇,一般個人開發測試選擇“訂閱號”,公司企業選擇服務號。
2. 基本配置
進入頁面後可以看到頁面左側的功能列表,這些基本功能一般可以滿足我們的使用需求。但是作爲開發者顯然不會滿足於在界面上點來點去的“開發”方式,故棄之!
2.1. 服務器配置
功能列表中 基本配置->服務器配置,按要求填寫配置。其中URL和Tocken下面我們會介紹。
首先需要準備一個雲服務器(阿里雲或者新浪雲等),推薦使用阿里雲服務器ECS,申請後用遠程桌面連接即可操作很方便。我簡單寫了一個Java web的微信公衆號服務器端(鏈接: https://pan.baidu.com/s/1o8banou 密碼: xmmm),在雲服務器上搭建環境運行即可。假設你的雲服務器IP是127.0.0.1,則配置的URL爲http://127.0.0.1/wechat Token爲mlqfly。主要處理代碼內容如下:
【WechatServlet】
package demo.servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import demo.process.WechatProcess;
import demo.util.SHA1;
public class WechatServlet extends HttpServlet {
private static final long serialVersionUID = 1140202829587508149L;
private String TOKEN = "mlqfly";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String signature = request.getParameter("signature");
String echostr = request.getParameter("echostr");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String[] str = { TOKEN, timestamp, nonce };
Arrays.sort(str);
String bigStr = str[0] + str[1] + str[2];
String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();
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");
/** 讀取接收到的xml消息 */
StringBuffer sb = new StringBuffer();
InputStream is = request.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String s = "";
while ((s = br.readLine()) != null) {
sb.append(s);
}
String xml = sb.toString(); //次即爲接收到微信端發送過來的xml數據
System.out.println("接收到消息 :" + xml);
String result = new WechatProcess().processWechatMag(xml);
try {
OutputStream os = response.getOutputStream();
os.write(result.getBytes("UTF-8"));
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
【web.xml】
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>weixin</servlet-name>
<servlet-class>demo.servlet.WechatServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>weixin</servlet-name>
<url-pattern>/wechat</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>pay</servlet-name>
<servlet-class>demo.servlet.PayServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>pay</servlet-name>
<url-pattern>/pay</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意:Demo中有一些暫時沒用到的東西,後面的筆記中會說到,不要刪哦~
2.2. 測試號配置
我們一般申請訂閱號進行測試開發,很多API接口沒有權限調用,所以需要用測試號進行測試開發,方法:開發者工具->公衆號平臺測試賬號
用自己的微信綁定登陸,則可以看到測試賬號信息,下面的appID和appsecret將伴隨你的整個開發過程。