SpringBoot开发微信公众号(一)
来源:互联网 发布:比特币交易平台 知乎 编辑:程序博客网 时间:2024/04/25 08:03
java开发微信公众号的环境搭建
前言:这段时间接触了下微信公众号的开发,回顾下学习的过程,做了学习的总结。微信公众号的开发有两种模式,第一种微信公众号提供的编辑模式,使用起来还是挺方便的。可以进行信息回复,自定义菜单等等。第二种提供了开发者模式。本学习系列采用的是java语言做后台服务器开发。当然也可以用其他语言实现,例如PHP等。本系列采用的是SpringBoot框架基础上开发,实现自定义菜单的建立,自定义回复消息,图片,音乐,实现智能翻译等等。
一、完成个人订阅号的认证
进行微信公众平台进行个人订阅号的注册和个人认证,官网地址https://mp.weixin.qq.com/。注册流程,课点击注册流程查看,个人订阅号注册完成进入主页,如下图
有兴趣的可以在编辑模式进行尝试
二、进入开发者模式下的配置
在左侧的导航栏下方,选择开发下的基本配置
说明:URL为java服务器的地址,此处需要用到内网穿透功能,实现的将内网的tomcat'服务的地址映射到公网的80端口,实现的方式有不少,这里推荐的是自己尝试的两种方式,相信大家也有所了解,一种ngrok,推荐使用的国内的服务器,低延时,实现域名固定。第二种,采用花生壳进行穿透。具体实现网上也有挺多,注册了一个,认证时需要6元。token与后台设置的保持一致就行。
三.java后台配置
3.1 springBoot项目搭建
springBoot近段时间流行的微框架,减少了大量的xml配置,简化环境的搭建。介绍一种简单的springboot项目搭建,在官网http://start.spring.io/配置自己需要的组件,下载到本地,Myeclipse通过Maven导入,即可完成
3.2 微信接入后台服务器
参考官网api文档,https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
代码实现
配置后台服务处理微信平台请求的处理器
/** * * 类名称: LoginController * 类描述: 与微信对接登陆验证 * @author yuanjun * 创建时间:2017年12月5日上午10:52:13 */@Controllerpublic class LoginController {@RequestMapping(value = "wx",method=RequestMethod.GET)public void login(HttpServletRequest request,HttpServletResponse response){System.out.println("success");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");PrintWriter out = null;try { out = response.getWriter();if(CheckUtil.checkSignature(signature, timestamp, nonce)){out.write(echostr);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{out.close();}}}
import java.util.Arrays;/** * * 类名称: CheckUtil * 类描述: 请求校验 * @author yuanjun * 创建时间:2017年12月8日上午10:54:16 */public class CheckUtil {private static final String token = "自己设置,要与微信页面设置的一致";public static boolean checkSignature(String signature,String timestamp,String nonce){String[] str = new String[]{token,timestamp,nonce};//排序Arrays.sort(str);//拼接字符串StringBuffer buffer = new StringBuffer();for(int i =0 ;i<str.length;i++){buffer.append(str[i]);}//进行sha1加密String temp = SHA1.encode(buffer.toString());//与微信提供的signature进行匹对return signature.equals(temp);}}
SHA1加密
import java.security.MessageDigest;/** * * 类名称: SHA1 * 类描述: sha1加密 * @author yuanjun * 创建时间:2017年12月5日上午11:10:01 */public final class SHA1 { private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /** * Takes the raw bytes from the digest and formats them correct. * * @param bytes the raw bytes from the digest. * @return the formatted bytes. */ private static String getFormattedText(byte[] bytes) { int len = bytes.length; StringBuilder buf = new StringBuilder(len * 2); // 把密文转换成十六进制的字符串形式 for (int j = 0; j < len; j++) { buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); buf.append(HEX_DIGITS[bytes[j] & 0x0f]); } return buf.toString(); } public static String encode(String str) { if (str == null) { return null; } try { MessageDigest messageDigest = MessageDigest.getInstance("SHA1"); messageDigest.update(str.getBytes()); return getFormattedText(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); } } }
3.3 application的配置,也可以不配置数据源,在启用项目时,则需要排除数据库的连接
server.port = 8080server.context-path = /weixinspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/websocketspring.datasource.username=rootspring.datasource.password=123456
3.4 启动tomcat服务,即运行主方法即可
将内网穿透映射搭建好,将URL和token配置到微信平台的基本配置中,点击确认,成功后,服务器配置变成已启用。完成配置
- SpringBoot开发微信公众号(一)
- 一起艳学Springboot开发微信公众号(一)
- SpringBoot开发微信公众号(二)
- Springboot开发微信公众号(三)
- SpringBoot开发微信公众号(四)
- SpringBoot开发微信公众号(五)
- SpringBoot开发微信公众号(六)
- SpringBoot开发微信公众号(七)
- 一起艳学Springboot开发微信公众号(二)
- 微信公众号开发(一):搭建开发环境
- java 微信公众号开发(一)--微信公众号接入
- 使用微信公众号开发<一>
- 微信公众号开发日志(一)
- 微信公众平台开发(一)
- 微信公众平台开发(一)
- 微信公众开发基础(一)
- #微信公众平台开发(一)
- 微信开发(一)公众号接入服务器
- UE4入门-常见的对象-概述
- DUBBO集群容错与负载均衡
- C++连接mysql数据库简单小例子(使用ODBC)
- 2017-12-08 python笔记2
- Ubuntu第一次登录给root用户设置密码
- SpringBoot开发微信公众号(一)
- python第三次
- STM32单片机以太网模块ENC28J60稳定 驱动程序SPI接口方便移植lwip或者uip
- Linux下sendmail配置
- HTTP状态码详情(转载)
- 并发库之信号量
- 一道编程题
- Android EditText限制输入两位小数
- 6-2 多态性与虚函数