微信公众号JAVA开发学习笔记(一) 公众号开发准备

1. 注册申请公众号

注册公众号主要的步骤在“选择类型”,三种类型都有具体描述根据自己的实际情况进行选择,一般个人开发测试选择“订阅号”,公司企业选择服务号。


2. 基本配置

进入页面后可以看到页面左侧的功能列表,这些基本功能一般可以满足我们的使用需求。但是作为开发者显然不会满足于在界面上点来点去的“开发”方式,故弃之!

2.1.  服务器配置

功能列表中 基本配置->服务器配置,按要求填写配置。其中URL和Tocken下面我们会介绍。

微信公众号JAVA开发学习笔记(一) 公众号开发准备_第1张图片

         首先需要准备一个云服务器(阿里云或者新浪云等),推荐使用阿里云服务器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】



  
    weixin
    demo.servlet.WechatServlet
  

  
    weixin
    /wechat
  
  
  
    pay
    demo.servlet.PayServlet
  

  
    pay
    /pay
  
  
  
    index.jsp
  


注意:Demo中有一些暂时没用到的东西,后面的笔记中会说到,不要删哦~

2.2.  测试号配置

     我们一般申请订阅号进行测试开发,很多API接口没有权限调用,所以需要用测试号进行测试开发,方法:开发者工具->公众号平台测试账号

微信公众号JAVA开发学习笔记(一) 公众号开发准备_第2张图片

    用自己的微信绑定登陆,则可以看到测试账号信息,下面的appIDappsecret将伴随你的整个开发过程。

微信公众号JAVA开发学习笔记(一) 公众号开发准备_第3张图片

你可能感兴趣的:(微信公众号JAVA开发学习笔记(一) 公众号开发准备)