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

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

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

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 exceptionreturn 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):

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

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

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

Java+微信公众号开发学习总结(一)相关推荐

  1. 慕课网_《Java微信公众号开发进阶》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...

  2. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  3. Java微信公众号开发梳理

    Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...

  4. Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

    本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息 ...

  5. Java微信公众号开发(一:接入平台,验证token)

    Java微信公众号开发(一:接入平台,验证token) 开发环境: 环境:JDK1.8 框架:springBoot 首先,在我们接入微信公众平台之前,我们需要注册微信公众号的开发者账号,获取开发者ID ...

  6. JAVA微信公众号开发第8篇JSSDK图片上传预览

    简介 博主微信JSSDK&图片上传预览基于微信分享做拓展,所以一些配置操作请点击查阅JAVA微信公众号开发第7篇JSSDK&微信分享博文 页面 <html><head ...

  7. Java微信公众号开发(附源码!!!)

    笔者最近在为一个艺考服务团队开发手机端的服务,由于开发app需要的时间较长,所以选择开发微信公众号.本人比较擅长Java开发,所以本文是基于Java语言的公众号开发.话不多说,直接进入正题. 准备工作 ...

  8. 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定,Java微信公众号开发消息推送公众号用户绑定问题 的解决办法

    问题概述 在进行微信公众号开发的时候遇到的这个问题,通过Web开发公众号的模板消息推送,在调试的过程中,需要进行开发者接口联调&调试,在调试之前需要将当前的公众号与用户的微信号进行绑定, 绑定 ...

  9. 微信公众号开发学习指南

    写在前面的话微信公众号开发自己学习时不知从何下手,写此文希望可以帮到今后学习开发这方面的朋友.学编程以来,刚开始我一直挺喜欢看视频教程的,边学边模仿.然而现在视频教程我却越发不愿意看了.越来越觉得教程 ...

最新文章

  1. Java学习总结:2
  2. 8.6 wait和waitpid函数-进程控制
  3. 脑机接口新进展!意念控制机器人离实现更近了一步!
  4. android学习笔记34——ClipDrawable资源
  5. Mac下安装及使用rz、sz远程上传下载文件
  6. 前端学习(1531):钩子函数--代码演示(面试重点)二
  7. 【Python学习日志】 - Numpy包
  8. 【BZOJ-1324】Exca王者之剑 最小割
  9. 总结的Server.Mappath的用法
  10. mysql 加速_DBA大牛MySQL优化心得,语句执行加速就是这么简单!
  11. 语义分割系列6-Unet++(pytorch实现)
  12. IP和MNC地址协议
  13. 随机过程(2)__马尔可夫链的主要性质__查普曼-科莫高洛夫方程
  14. java强制转换用法_Java入门课|这才是Java强制类型转换的正确使用方法,你真的会用这些吗...
  15. 2020年甘肃省土地利用数据(矢量)
  16. 高德地图根据点标记位置自动调整地图缩放级别
  17. 为什么老外一个人能带宝宝,中国要一家子?
  18. C++ | 对C的增强(一)
  19. px,em,rem,rpx 单位的用法和区别
  20. 海铁联运码头的优化挑战和文献综述

热门文章

  1. 2012年12月读书计划
  2. 电脑桌面云便签软件怎么用便签快捷键在编辑中快速保存便签内容?
  3. 详述Servlet获取form表单数据
  4. 【笔记】前端 HTML
  5. 烟台:百亿新能源整车项目落户 打造新能源汽车全产业链
  6. ctf-ichunqiu-misc
  7. HTML基础--CSS样式表(一)
  8. Mac使用技巧之快速显示桌面
  9. 神经网络 顾晓东_一定条件下PCNN动态行为的分析
  10. ehcache 自定义缓存删除(evictionAdvisor)