微信开发基于springboot
0.申请一个微信公众号,记住他的appId,secret,token,accesstoken
1.创建一个springboot项目。在pom文件里面导入微信开发工具类
- <dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.1.0</version>
</dependency>
2.编写controller
- package com.weixin.demo.demo.web.back.controller;
- import me.chanjar.weixin.mp.api.WxMpService;
- import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
- import me.chanjar.weixin.mp.bean.message.WxMpXmlOutImageMessage;
- import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.PrintWriter;
- @Controller
- public class weixinController {
- @Autowired
- private WxMpService wxMpService;
- /**
- * 1.接入公众号:公众号服务器配置的接口地址为这个
- * @param signature
- * @param timestamp
- * @param nonce
- * @param echostr
- * @return
- */
- @RequestMapping(value= "/wechart/index",method = RequestMethod.GET)
- @ResponseBody
- public String checkSignature(String signature, String timestamp, String nonce, String echostr)
- {
- System.out.println("————————微信接入——————————");
- if (wxMpService.checkSignature(timestamp,nonce,signature))
- {
- return echostr;
- }else
- {
- return null;
- }
- }
- /**
- * 消息的接收和回复
- */
- @PostMapping("/wechart/index")
- @ResponseBody
- public void sendWxMessage(HttpServletRequest request, HttpServletResponse response) throws IOException {
- System.out.println("————————微信消息接收和发送——————————");
- //获取消息流
- WxMpXmlMessage message=WxMpXmlMessage.fromXml(request.getInputStream());
- //消息的处理:文本 text
- String msgType = message.getMsgType();//消息的类型
- String fromUser = message.getFromUser();//发送消息用户的账号
- String toUser = message.getToUser();//开发者账号
- String content = message.getContent();//文本内容
- String msg = message.getMsg();
- //回复文本消息
- if("text".equals(msgType))
- {
- //创建文本消息内容
- WxMpXmlOutTextMessage text=WxMpXmlOutTextMessage.TEXT().
- toUser(message.getFromUser()).
- fromUser(message.getToUser()).
- content("你好,很高心认识你").build();
- //转化为xml格式
- String xml=text.toXml();
- System.out.println(xml);
- //返回消息
- response.setCharacterEncoding("UTF-8");
- PrintWriter out=response.getWriter();
- out.print(xml);
- out.close();
- }
- }
- /**
- * 首页访问
- * @return
- */
- @RequestMapping(value= "/",method = RequestMethod.GET)
- @ResponseBody
- public String index()
- {
- return "hello";
- }
- }
weixinController
3.编写初始化文件:从application.yml配置文件中获取 appId,secret,token,accesstoken,这几个值来自公众号
- package com.weixin.demo.demo.web.common.config;
- import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
- import me.chanjar.weixin.mp.api.WxMpService;
- import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @ConfigurationProperties("siping")
- @Configuration
- public class WechatConfig {
- //从配置文件中获取字段,需要设置get,set方法
- private String appId;
- private String secret;
- private String token;
- private String accesstoken;
- /**
- * 初始化微信service
- *
- * @return
- */
- @Bean
- public WxMpService getWxMpService() {
- WxMpService wxMpService = new WxMpServiceImpl();
- WxMpInMemoryConfigStorage wxMpInMemoryConfigStorage = new WxMpInMemoryConfigStorage();
- wxMpInMemoryConfigStorage.setAppId(appId);
- wxMpInMemoryConfigStorage.setSecret(secret);
- wxMpInMemoryConfigStorage.setToken(token);
- wxMpInMemoryConfigStorage.setAccessToken(accesstoken);
- wxMpService.setWxMpConfigStorage(wxMpInMemoryConfigStorage);
- return wxMpService;
- }
- public String getAppId() {
- return appId;
- }
- public void setAppId(String appId) {
- this.appId = appId;
- }
- public String getSecret() {
- return secret;
- }
- public void setSecret(String secret) {
- this.secret = secret;
- }
- public String getToken() {
- return token;
- }
- public void setToken(String token) {
- this.token = token;
- }
- public String getAccesstoken() {
- return accesstoken;
- }
- public void setAccesstoken(String accesstoken) {
- this.accesstoken = accesstoken;
- }
- }
WechatConfig
3.注意:
在回复消息的时候需要注意:toUser,和fromUser的主体是谁,一般时候微信端传递过来的值反着的。
- 4.通过natapp配置内网穿透映射127.0.0.1:8080端口,让微信端能够访问到:
登录注册natapp,下载natapp的客户端,运行,在命令行输入:natapp -authtoken=自己登录后分配的natapptoken号
5.和公众号平台对接自己的服务器
6.结果
微信开发基于springboot的更多相关文章
- 接口开发-基于SpringBoot创建基础框架
说到接口开发,能想到的开发语言有很多种,像什么Java啊..NET啊.PHP啊.NodeJS啊,太多可以用.为什么选择Java,究其原因,最后只有一个解释,那就是“学Java的人多,人员招聘范围大,有 ...
- 基于spring-boot的社区社交微信小程序,适合做脚手架、二次开发
基于spring-boot的社区社交微信小程序,适合做脚手架.二次开发 代码地址如下:http://www.demodashi.com/demo/13867.html 1 概述 笔者做的一个后端基于s ...
- 基于SpringBoot的开源微信开发平台,Jeewx-Boot 1.0 版本发布
项目介绍 JeewxBoot 是一款基于SpringBoot的免费微信开发平台.支持微信公众号.小程序官网.微信抽奖活动. Jeewx-Boot实现了微信公众号管理.小程序CMS.微信抽奖活动等基础功 ...
- 基于SpringBoot从零构建博客网站 - 技术选型和整合开发环境
技术选型和整合开发环境 1.技术选型 博客网站是基于SpringBoot整合其它模块而开发的,那么每个模块选择的技术如下: SpringBoot版本选择目前较新的2.1.1.RELEASE版本 持久化 ...
- Jeewx-Boot 1.1 版本发布,基于SpringBoot的开源微信管家系统
项目介绍 JeewxBoot是一款基于SpringBoot的开源微信管家系统,采用SpringBoot2.1.3 + Mybatis + Velocity 框架技术.支持微信公众号.微信第三方平台(扫 ...
- JeecgBoot 2.1.1 代码生成器AI版本发布,基于SpringBoot+AntDesign的JAVA快速开发平台
此版本重点升级了 Online 代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率:同时做了数据库兼容专项工作,让 Online 开发兼容更多数据库:Mysql.SqlServer.Ora ...
- 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台
项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...
- 基于SpringBoot免费开源的微信管家平台,Jeewx-Boot 1.0.3 版本发布
项目介绍 JeewxBoot 是一款基于SpringBoot的免费微信开发平台.支持微信公众号.小程序官网.微信抽奖活动.Jeewx-Boot实现了微信公众号管理.小程序CMS.微信抽奖活动等基础功能 ...
- 基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布
Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. 强大的代 ...
随机推荐
- mongoDB3.0版本使用express读取数据
使用express连接数据库操作 var express = require('express'); var app = express(); var MongoClient = require('m ...
- JQuery EasyUI 之 messager基本使用
♦ 基本语法:$.messager.alert ( title , msg , icon , fn ): 其中,icon有四种设置:"error"."info" ...
- AWK如何打印从某一列到最后一列的内容
awk -F " " '{for (i=4;i<=NF;i++)printf("%s ", $i);print ""}' file
- mysql的表映射
参考博客:https://blog.csdn.net/shushugood/article/details/79925150 1.服务器上的操作 在服务器上mysql创建一个实例,名为test_db, ...
- Vofuria ARCamera相机问题
想要发射 射线 Camera.allCameras[0] 该语句来选择相机:Camera.main 此语句只能找到Tag为MainCamera的相机:
- Token令牌管理权限
什么是token HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息,没办法区分每次请求的不同. Token是服务器生成的一串字符,作为客户端请求的令牌.当第一次登陆后,服务器会分发Ton ...
- vue源码分析之new Vue过程
实例化构造函数 从这里可以看出new Vue实际上是使vue构造函数实例化,然后调用_init方法 _init方法,该方法在 src/core/instance/init.js 中定义 Vue.pro ...
- linux 修改history带有时间
今天在网上学到了给linux的history添加时间.方法如下: 首先已知HISTTIMEFORMAT可以给history设置时间:临时修改直接赋值:HISTTIMEFORMAT="%F % ...
- 11 个超棒的 jQuery 分步指引插件
当一个网站或者一个Web应用推出新功能时,为了让用户了解你的站点(或应用)如何操作,往往都会在站点(应用)中添加一个分步指引的效果.然而这样的效果,对于不懂原生JS的同学来说,是件很头痛的事情. 下面 ...
- oracle导入.dmp文件
在日常开发中,经常需要往一个数据库里导入.dmp文件,下面简单介绍下如何通过命令导入 1.创建一个awsbpm用户create user 用户名 identified by 密码; 如:create ...