SpringBoot搭建微信公众号后台(零):服务搭建与接口验证

自媒体运营教程 产品运营 231

点击蓝字关注作者,更新动态实时掌握

微信公众号:隔壁的程序员

前言:从这篇开始小王子将开始一个新的系列内容,从零开始搭建自己的微信公众号后台。内容大致规划为:环境篇,包括用到的工具安装,破解,配置;基础篇,主要根据微信官方文档,实现基本功能;详解篇,对开发过程中使用到的第三方框架以及其他配置做一个详解(文中注明挖坑的地方都会在后期补全)。三种类型可能会穿插进行,而且会在知乎,b站,csdn等平台同步,感兴趣的朋友可以点个关注,总有一个你顺手的平台。如果有不严谨或者错误的地方也欢迎批评指正。正文:实现SpringBoot接入微信公众号后台总共分下面几大步:

  1. 准备服务器
  2. 搭建SpringBooot开发环境
  3. 服务部署
  4. 接口验证
  5. API接口对接与扩展

服务器准备

服务器可以使用云服务器,也可以使用本地电脑充当服务器。云服务器不需要自己电脑长期开机,最近双十一各大平台也有优惠活动,而且还会时不时推出免费试用活动,所以还是可以考虑的,富哥请随意。本地服务器则需要自己拥有公网IP或者做内网穿透,这会导致你自己的电脑暴露于互联网环境,如果安全相关知识薄弱的话还是慎重。(挖坑)

小王子目前使用的是百度云服务器,1元试用1个月。

搭建SpringBooot开发环境 从最简单的JDK配置到Maven,数据库以及开发工具Idea的破解,会在配置篇补充,这里省略。

项目搭建推荐使用Spring Initializr,这是Spring官方开源的一个脚手架项目,可以帮我们便捷的创建原始框架,如果http://start.spring.io打不开或者连接龟速缓慢,可以使用阿里云的https://start.aliyun.com/,在此基础上做了二次开发。或者直接访问这个网页,在页面上生成之后下载下来导入,步骤是一样的。


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第1张图片-90博客网

创建项目

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


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第2张图片-90博客网

选择依赖包

创建之后的目录如下


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第3张图片-90博客网

原始目录

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


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第4张图片-90博客网

启动测试

浏览器访问看到响应,至此一个最基本的SpringBoot项目创建完毕。

相关影片资源迅雷下载推荐

分享一个美业消费分红模式———参考中军有为手机分红模式 ... ...

导读:微三云旗下有哪些品牌子公司和软件系统? 答:微三云公司旗下品牌:微三云公司旗下 品牌 有“微三云”、“莞云”、“莞链”、“云 视商”、“晶抖云”、“超级云 APP“、“莞带供应链”、“莞云 NFT”等,创立 ...

七人拼团,分享一个美业消费分红模式———参考中军有为手机分红模式 ... ...


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第5张图片-90博客网

测试结果

服务部署

我们上面使用的打包方式是jar包,只用maven的package命令,输出的jar包路径为target目录(maven配置挖坑),使用远程连接工具把jar包上传到服务器然后使用java -jar xxx.jar即可启动服务。

接口验证

根据开发文档,接入公众号后台需要先配置服务器进行接口验证。


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第6张图片-90博客网

开发文档

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

SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第7张图片-90博客网

验证步骤

如果是云服务器,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已经做了依赖管理,可以不用加版本号.
配置:

<dependency>
<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(挖坑)。

打包之后部署到服务器进行验证,提交请求弹出提交成功,我们的控制台也打印出了“校验通过”,至此接入公众号后台就算完成了。


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第8张图片-90博客网

提交成功

SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第9张图片-90博客网

校验通过

API接口对接与扩展

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


SpringBoot搭建微信公众号后台(零):服务搭建与接口验证-第10张图片-90博客网

相关影片资源迅雷下载推荐

软件开发与创新

创新,作为当前各行各业一个非常时髦的话题。针对软件行业来讲,体现的尤为淋漓尽致。可以不夸张的说,推动软件行业发展的永恒动力就是创新。所谓创新,通俗地讲就是,别人没想到的你想到了;别人没发现的你发现了; ...

软件开发,软件开发与创新

企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930

标签: 公众号开发 SpringBoot搭建微信公众号后台(零):服务搭建与接口验证

抱歉,评论功能暂时关闭!