小兔网

这两天自己想学习微信公众号开发,于是在网上搜索并上手练习,在这个过程中因为各种问题,(描述不完整,有的文章不知道怎么就蹦出个新的常量,也没说在哪定义的,还有jar包版本的问题坑了我一天的时间)所以特此在这记录。

1.首先,先得注册一个微信公众号,上度娘搜索微信公众平台,进入这个页面注册(已有账号的跳过这个步骤):

Java+微信公众号开发过程步骤详解

2.然后用Eclipse新建一个项目,这里我建的是web项目,jdk是1.8,tomcat是8.5.

Java+微信公众号开发过程步骤详解

3.为了和微信建立连接,建好工程后先新建一个类,命名为:CheckUtil,它的作用是作为和微信连接的校验工具,代码如下:

import java.security.MessageDigest;import java.util.Arrays;public class CheckUtil {public static final String  tooken = "自行定义"; //开发者自行定义Tookenpublic static boolean checkSignature(String signature,String timestamp,String nonce){//1.定义数组存放tooken,timestamp,nonceString[] arr = {tooken,timestamp,nonce};//2.对数组进行排序Arrays.sort(arr);//3.生成字符串StringBuffer sb = new StringBuffer();for(String s : arr){sb.append(s);}//4.sha1加密,网上均有现成代码String temp = getSha1(sb.toString());//5.将加密后的字符串,与微信传来的加密签名比较,返回结果return temp.equals(signature);}public static String getSha1(String str){        if(str==null||str.length()==0){            return null;        }        char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',                'a','b','c','d','e','f'};        try {            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");            mdTemp.update(str.getBytes("UTF-8"));            byte[] md = mdTemp.digest();            int j = md.length;            char buf[] = new char[j*2];            int k = 0;            for (int i = 0; i < j; i++) {                byte byte0 = md[i];                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];                buf[k++] = hexDigits[byte0 & 0xf];                  }            return new String(buf);        } catch (Exception e) {            // TODO: handle exception            return null;        }    }}

4.然后新建一个servlet,重写doGet方法接收微信发来的GET请求,部分代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");PrintWriter out = response.getWriter();if(CheckUtil.checkSignature(signature, timestamp, nonce)){//如果校验成功,将得到的随机字符串原路返回out.print(echostr);}}

5.代码写完后,这里需要一个工具将我们的内网链接映射为公网,这样微信才能访问到我们的后台,这里我采用的是一款免费的映射工具ngrok,去度娘搜索下载即可,下载完后解压放在一个指定位置,同时按住win键+R键,输入cmd,回车进入dos环境,切换到ngrock所在盘符,输入ngrock http 8080 回车(在这之前先启动tomcat):

Java+微信公众号开发过程步骤详解

6.回车后等待一会,即可得到公网链接,下图所示阴影区域给出的链接,即可直接访问本机127.0.0.1:8080下的链接内容,分别是http协议和https协议对应的地址:

Java+微信公众号开发过程步骤详解

7.登录微信公众号平台,滑到最下面,点击左下角的开发——基本配置:

Java+微信公众号开发过程步骤详解

点击提交按钮,提示提交成功就说明微信能访问到我们自己的后台了。

相关推荐:

Java实现微信公众平台开发的图文代码实例

微信公众号支付开发(java)实例详解

以上就是Java+微信公众号开发过程步骤详解的知识。速戳>>知识兔学习精品课!