公众号开发须知

很多人在刚刚开始接触公众号开发的时候,对公众号后台的服务器设置很迷茫,不知道怎么配置。我简单的给大家介绍一下。
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开发微信公众号_回复文本信息功能相关推荐

  1. SpringBoot开发微信公众号

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公 ...

  2. SpringBoot开发微信公众号(三)

    这篇文章创建一下菜单 public class MyX509TrustManager implements X509TrustManager {@Overridepublic void checkCl ...

  3. 华为云服务器如何搭建微信公众号后台-收发文本信息?

    概述 在本教程中,您将学会使用弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果给最终用户,如图 ...

  4. Nodejs + express 开发微信公众号模板消息推送功能

    第一步:申请测试号 1.打开微信测试号申请平台 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.点击"登录&q ...

  5. Spring Boot 开发微信公众号

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公众 ...

  6. 【微信开发第二章】SpringBoot实现微信公众号普通消息和模板消息回复

    前言 在进行微信公众号业务开发的时候,微信公众号的消息回复是非常重要的一环,而微信公众号消息回复分为:普通消息自动回复和模板消息回复.该篇文章会先使用微信测试工具过一遍流程,再使用代码进行实现,并且每 ...

  7. Java开发微信公众号之被动回复用户消息-回复图片消息

    一.前言 hello小伙伴们,大家好,做微信开发两年了,最近看到微信方面的文章阅读量和关注量上升的比较快速,激发了我满满的动力啊,所以就滋生了一个想法,从头开始整理一下微信公众号开发,写一个简易的教程 ...

  8. 微信公众号_订阅号+服务号开发工具包-翟东平-专题视频课程

    微信公众号_订阅号+服务号开发工具包-15114人已学习 课程介绍         "微信公众平台深度开发Java版 v2.0"系列课程共有6季,使用JAVA语言,系统讲解微信公众 ...

  9. 【微信开发第一章】SpringBoot实现微信公众号创建菜单,同步菜单功能

    前言 在进行微信公众号业务开发的时候,微信公众号的自定义菜单是非常重要的一环,该篇文章会先使用微信测试工具过一遍流程,再使用代码进行实现,争取看过的小伙伴都能够实现,创建公众号菜单和代码同步公众号菜单 ...

最新文章

  1. 百度开源业内首个口罩人脸检测及分类模型,携手开发者共同抗疫
  2. php实现微信企业向用户付款
  3. Linux下添加新硬盘,分区及挂载
  4. 练习PYTHON之EPOLL
  5. 010_JavaScript变量
  6. 【MM】需求类型清单
  7. C++ primer三章二节标准库类型string
  8. vtkpolydata图形着色
  9. #includeunistd.h存在linux中,含有系统服务的函数
  10. 几个好用的makefile 几乎可以不用修改
  11. SpringBoot启动o.s.b.d.LoggingFailure… 错误解决方法
  12. Shell常用命令大全
  13. Flymcu烧录出错
  14. STC15单片机-无线通讯(WIFI模块)
  15. 三维扫描3D打印在创客教育中的实际应用
  16. 【视频分享】尚学堂---数据结构和算法
  17. div 添加失焦事件
  18. 《精读 Mastering ABP Framework》教程发布
  19. Python可以制作植物大战僵尸,你还不知道吗?
  20. oracle varchar,date互转,number,varchar互转

热门文章

  1. 清理微信浏览器网页缓存的办法
  2. 优化产品交互逻辑来提升产品性能
  3. 我们对区块链游戏的期望太高了
  4. Latex字体加粗不了
  5. Python——Day4(基础知识练习二)
  6. 设计原则(3)-里氏代换原则
  7. 我是怎样使用BoundsChecker的
  8. 【渝粤教育】电大中专跨境电子商务理论与实务 (4)作业 题库
  9. Matlab符号微积分练习
  10. Java面向对象设计(面向对象)