微信公衆號JAVA開發學習筆記(一) 公衆號開發準備

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接口沒有權限調用,所以需要用測試號進行測試開發,方法:開發者工具->公衆號平臺測試賬號


    用自己的微信綁定登陸,則可以看到測試賬號信息,下面的appIDappsecret將伴隨你的整個開發過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章