点击蓝字关注作者,更新动态实时掌握
微信公众号:隔壁的程序员
前言:从这篇开始小王子将开始一个新的系列内容,从零开始搭建自己的微信公众号后台。内容大致规划为:环境篇,包括用到的工具安装,破解,配置;基础篇,主要根据微信官方文档,实现基本功能;详解篇,对开发过程中使用到的第三方框架以及其他配置做一个详解(文中注明挖坑的地方都会在后期补全)。三种类型可能会穿插进行,而且会在知乎,b站,csdn等平台同步,感兴趣的朋友可以点个关注,总有一个你顺手的平台。如果有不严谨或者错误的地方也欢迎批评指正。正文:实现SpringBoot接入微信公众号后台总共分下面几大步:
- 准备服务器
- 搭建SpringBooot开发环境
- 服务部署
- 接口验证
- API接口对接与扩展
服务器准备
服务器可以使用云服务器,也可以使用本地电脑充当服务器。云服务器不需要自己电脑长期开机,最近双十一各大平台也有优惠活动,而且还会时不时推出免费试用活动,所以还是可以考虑的,富哥请随意。本地服务器则需要自己拥有公网IP或者做内网穿透,这会导致你自己的电脑暴露于互联网环境,如果安全相关知识薄弱的话还是慎重。(挖坑)
小王子目前使用的是百度云服务器,1元试用1个月。
搭建SpringBooot开发环境 从最简单的JDK配置到Maven,数据库以及开发工具Idea的破解,会在配置篇补充,这里省略。
项目搭建推荐使用Spring Initializr,这是Spring官方开源的一个脚手架项目,可以帮我们便捷的创建原始框架,如果http://start.spring.io打不开或者连接龟速缓慢,可以使用阿里云的https://start.aliyun.com/,在此基础上做了二次开发。或者直接访问这个网页,在页面上生成之后下载下来导入,步骤是一样的。

创建项目
这一步可以直接勾选我们需要的依赖,为了简单演示,这里只勾选了Spring Boot DevTools,Lombok和Spring Web,其他相关框架用到的时候再单独添加。

选择依赖包
创建之后的目录如下

原始目录
项目创建完毕之后添加测试代码,启动。

启动测试
浏览器访问看到响应,至此一个最基本的SpringBoot项目创建完毕。
相关影片资源迅雷下载推荐
分享一个美业消费分红模式———参考中军有为手机分红模式 ... ...
导读:微三云旗下有哪些品牌子公司和软件系统? 答:微三云公司旗下品牌:微三云公司旗下 品牌 有“微三云”、“莞云”、“莞链”、“云 视商”、“晶抖云”、“超级云 APP“、“莞带供应链”、“莞云 NFT”等,创立 ...
七人拼团,分享一个美业消费分红模式———参考中军有为手机分红模式 ... ...

测试结果
服务部署
我们上面使用的打包方式是jar包,只用maven的package命令,输出的jar包路径为target目录(maven配置挖坑),使用远程连接工具把jar包上传到服务器然后使用java -jar xxx.jar即可启动服务。
接口验证
根据开发文档,接入公众号后台需要先配置服务器进行接口验证。

开发文档
登录微信公众平台官网后,在公众平台官网的开发 - 基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中 URL 是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该 Token 会和接口 URL 中包含的 Token 进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。微信公众号开发文档

验证步骤
如果是云服务器,url直接填写你的服务器IP就可以,注意一点这个接口只支持80端口,有域名的也可以使用域名,本地机器的话填写你的公网 IP,或者内网穿透时的地址。那么这个接口需要怎么验证呢?小马在文档中告诉我们了,微信服务器会在我们提交地址之后发送一个GET请求,携带四个参数:
参数 | 描述 |
---|---|
signature | 微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
我们通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信。
这里用到加密,所以我们引入加密工具类,Spring已经做了依赖管理,可以不用加版本号.
配置:
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
接口:
package com.prince.wechat;import com.prince.wechat.common.WechatUtils;
import org.springframework.boot.SpringAPPlication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@SpringBootApplication
@RestController
public class WechatApplication {
public static void main(String[] args) {
SpringApplication.run(WechatApplication.class, args);
}
/**
* 微信接口验证
* @param request
* @return
*/
@RequestMapping("/wechat")
public String check(HttpServletRequest request){
System.out.println("get方法");
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
if (WechatUtils.checkSignature(signature, timestamp, nonce)) {
System.out.println("检验通过");
return echostr;
}
System.out.println("检验不通过");
return "校验不通过";
}
}
校验工具类:
package com.prince.wechat.common;import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils;
import java.util.ArrayList;
import java.util.Collections;
@RequiredArgsConstructor
public class WechatUtils {
/*
* 规则描述
*1. 将token、timestamp、nonce三个参数进行字典序排序
*2. 将三个参数字符串拼接成一个字符串进行sha1加密
*3. 获得加密后的字符串可与signature对比,标识该请求来源于微信
*/
public static boolean checkSignature(String signature, String timestamp, String nonce) {
String token = "prince";
ArrayList<String> list = new ArrayList();
list.add(nonce);
list.add(timestamp);
list.add(token);
Collections.sort(list);
StringBuilder sb= new StringBuilder();
list.forEach(sb::append);
String result = sb.toString();
String sha1 = DigestUtils.sha1Hex(result);
System.out.println(String.format("sha1:%s,signature:%s",sha1,signature));
return signature.equals(sha1);
}
}
这是最简单的一个实现验证接口的过程,没有添加参数校验等操作,token配置先写死,后期补充配置文件加密以及命令行参数启动添加token(挖坑)。
打包之后部署到服务器进行验证,提交请求弹出提交成功,我们的控制台也打印出了“校验通过”,至此接入公众号后台就算完成了。

提交成功

校验通过
API接口对接与扩展
这个就是接入之后调用微信的API做一些菜单以及消息推送之类的,后面详细讲.(挖坑)

企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930相关影片资源迅雷下载推荐
软件开发与创新
创新,作为当前各行各业一个非常时髦的话题。针对软件行业来讲,体现的尤为淋漓尽致。可以不夸张的说,推动软件行业发展的永恒动力就是创新。所谓创新,通俗地讲就是,别人没想到的你想到了;别人没发现的你发现了; ...
软件开发,软件开发与创新
标签: 公众号开发 SpringBoot搭建微信公众号后台(零):服务搭建与接口验证