SpringBoot开发微信公众号_回复文本信息功能
公众号开发须知
很多人在刚刚开始接触公众号开发的时候,对公众号后台的服务器设置很迷茫,不知道怎么配置。我简单的给大家介绍一下。
1、如果你是想做信息回复
功能的,就是你给公众号发相关的关键字,公众号直接给你回复相关内容。你只需要配置这些地方
2、如果你要做其他功能的开发,比如要获取微信用户的个人基本信息,则你要多配置一下这个地方(上面的第一点也要先配置好)
###案例演示
效果图
实现步骤
1、注册公众号
(这里不演示,我的公众号是认证服务号)
2、后端开发对接公众号功能开发
3、公众号后台服务器配置信息填写验证
(需要用到内网穿透)
4、发送消息回复功能实现
操作演示开始
1、注册公众号
这里不演示,如果不会可以联系小编
2、后端开发对接公众号功能开发
2.1、创建一个springboot项目
项目目录结构:
2.2、修改pom.xml文件,导入相关的jar坐标
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.9</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency></dependencies>
2.3、修改application.properties文件
##项目端口号
server.port = 80
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/websocket
spring.datasource.username=root
spring.datasource.password=123456
注意:
mysql配置,虽然项目中没有涉及到这个,但是也要配置,不然项目启动不了,你可以随便创建一个数据库什么都可以不用操作
错误截图:
2.4、编写公众号接口参数效验工具类
EchostrCheckUtil.java
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
/*** 验证微信服务器配置接入*/
public class EchostrCheckUtil {private static final String token = "填入你的token,需要和公众号配置一致";/*** 开发者通过检验signature对请求进行校验(下面有校验方式)。* 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,* 否则接入失败。加密/校验流程如下:* 1)将token、timestamp、nonce三个参数进行字典序排序* 2)将三个参数字符串拼接成一个字符串进行sha1加密* 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信*/public static String checkSignature(HttpServletRequest request) {//微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数String signature = request.getParameter("signature");//时间戳String timestamp = request.getParameter("timestamp");//随机数String nonce = request.getParameter("nonce");//随机字符串String echostr = request.getParameter("echostr");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进行匹对if (signature.equals(temp)) {return echostr;} else {return null;}}
}
此处可以参考公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html
2.4、编写公众号接入校验类接口
WxController.java
@Controller
public class WxController {//token验证接入接口@GetMapping("wx")public String login(HttpServletRequest request){return EchostrCheckUtil.checkSignature(request);}}
注意:
这里的请求地址是http://你的域名/wx
,这个需要和公众号的服务器地址配置一致
2.5、启动项目,然后去公众号后台配置服务器信息
3、公众号后台服务器配置信息填写验证(需要用到内网穿透)
3.1、需要通过内网穿透,把你本地的服务器映射出去,这样外网才能访问到你电脑的项目,我用的是ngrok
安装演示(不懂可以练习小编xxf960513
)
注意
如上图:Forwarding
后面对应的地址就是你内网穿透给你生成的映射地址,你本地电脑启动项目,可以用手机访问改地址就能访问到你电脑的项目了。
4、发送消息回复功能实现
(开始发开,我们给公众号发送什么,公众号做出对应的回复功能)
开发回复功能之前,先给大家简单的介绍一下
1、公众号回复消息的类型有:
1 回复文本消息
2 回复图片消息
3 回复语音消息
4 回复视频消息
5 回复音乐消息
6 回复图文消息
2、回复的格式是:
xml
回复文本消息的xml格式
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content>
</xml>
4.1、创建一个文本消息的pojo类
TextMessage.java
public class TextMessage {protected String ToUserName;//接收方账号protected String FromUserName;//开发者微信号protected long CreateTime;//消息创建时间protected String MsgType;//消息类型private String Content;//文本消息内容private String MsgId;//消息id,64位整型...(此处省略get和set方法)}
4.2、创建一个普通文本回复的工具类,回复消息之前需要转成微信公众号需要的xml格式
public class TextMessageUtil implements BaseMessageUtil<TextMessage> {//把pojo对象转成微信回复需要的xml格式对应的字符串@Overridepublic String messageToxml(TextMessage message) {XStream xstream = new XStream();xstream.alias("xml", message.getClass());return xstream.toXML(message);}//普通消息@Overridepublic String initMessage(String FromUserName, String ToUserName) {return null;}public String initMessage(String FromUserName, String ToUserName, String Content) {TextMessage text = new TextMessage();text.setToUserName(FromUserName);text.setFromUserName(ToUserName);text.setContent("您输入的内容是:" + Content);text.setCreateTime(System.currentTimeMillis());text.setMsgType("text");return messageToxml(text);}
}
4.3、创建一个MessageController类,用于接收用户给公众号发送的信息,收到消息后进行回复的接口
MessageController.java
@RestController
public class MessageController {@PostMapping("/wx")public String answerMessage(HttpServletRequest request, HttpServletResponse response){response.setCharacterEncoding("utf-8");//将微信请求xml转为map格式,获取所需的参数Map<String,String> map = MessageUtil.xmlToMap(request);//开发者微信号String ToUserName = map.get("ToUserName");// 发送方帐号(一个OpenID)String FromUserName = map.get("FromUserName");//获取用户发过来的消息类型,文本为textString MsgType = map.get("MsgType");//文本消息内容String Content = map.get("Content");String message = null;//处理文本类型,实现输入回复相应的封装的内容if("text".equals(MsgType)){TextMessageUtil textMessage = new TextMessageUtil();message = textMessage.initMessage(FromUserName, ToUserName,Content);return message;}else {return null;}}
}
注意:
这个请求地址需要与验证token接入的请求地址一样,这样才能获取用户给公众号发送的内容
4.4、启动项目给公众号回复消息进行测试。结果:
--完–
本案的完整源码获取方式
https://gitee.com/xuxiaofei1996/springboot_gongzhonghao1.git
SpringBoot开发微信公众号_回复文本信息功能相关推荐
- SpringBoot开发微信公众号
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公 ...
- SpringBoot开发微信公众号(三)
这篇文章创建一下菜单 public class MyX509TrustManager implements X509TrustManager {@Overridepublic void checkCl ...
- 华为云服务器如何搭建微信公众号后台-收发文本信息?
概述 在本教程中,您将学会使用弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果给最终用户,如图 ...
- Nodejs + express 开发微信公众号模板消息推送功能
第一步:申请测试号 1.打开微信测试号申请平台 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.点击"登录&q ...
- Spring Boot 开发微信公众号
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公众 ...
- 【微信开发第二章】SpringBoot实现微信公众号普通消息和模板消息回复
前言 在进行微信公众号业务开发的时候,微信公众号的消息回复是非常重要的一环,而微信公众号消息回复分为:普通消息自动回复和模板消息回复.该篇文章会先使用微信测试工具过一遍流程,再使用代码进行实现,并且每 ...
- Java开发微信公众号之被动回复用户消息-回复图片消息
一.前言 hello小伙伴们,大家好,做微信开发两年了,最近看到微信方面的文章阅读量和关注量上升的比较快速,激发了我满满的动力啊,所以就滋生了一个想法,从头开始整理一下微信公众号开发,写一个简易的教程 ...
- 微信公众号_订阅号+服务号开发工具包-翟东平-专题视频课程
微信公众号_订阅号+服务号开发工具包-15114人已学习 课程介绍 "微信公众平台深度开发Java版 v2.0"系列课程共有6季,使用JAVA语言,系统讲解微信公众 ...
- 【微信开发第一章】SpringBoot实现微信公众号创建菜单,同步菜单功能
前言 在进行微信公众号业务开发的时候,微信公众号的自定义菜单是非常重要的一环,该篇文章会先使用微信测试工具过一遍流程,再使用代码进行实现,争取看过的小伙伴都能够实现,创建公众号菜单和代码同步公众号菜单 ...
最新文章
- 百度开源业内首个口罩人脸检测及分类模型,携手开发者共同抗疫
- php实现微信企业向用户付款
- Linux下添加新硬盘,分区及挂载
- 练习PYTHON之EPOLL
- 010_JavaScript变量
- 【MM】需求类型清单
- C++ primer三章二节标准库类型string
- vtkpolydata图形着色
- #includeunistd.h存在linux中,含有系统服务的函数
- 几个好用的makefile 几乎可以不用修改
- SpringBoot启动o.s.b.d.LoggingFailure… 错误解决方法
- Shell常用命令大全
- Flymcu烧录出错
- STC15单片机-无线通讯(WIFI模块)
- 三维扫描3D打印在创客教育中的实际应用
- 【视频分享】尚学堂---数据结构和算法
- div 添加失焦事件
- 《精读 Mastering ABP Framework》教程发布
- Python可以制作植物大战僵尸,你还不知道吗?
- oracle varchar,date互转,number,varchar互转