使用springboot进行微信公众号开发的准备!
目录1、公众号相关网站2、服务号、订阅号的区别3、找到微信公众帐号测试号4、准备域名5、appID、appsecret、URL、Token、access_token介绍6、实现公众号与springboot相连接1、公众号相关网站公众号登录网站:https://mp.weixin.qq.com/ ,手机扫描二维码即可显示公众号登录还是小程序登录了。官方文档:https://developers.we
目录
5、appID、appsecret、URL、Token、access_token介绍
1、公众号相关网站
公众号登录网站: 微信公众平台 , 手机扫描二维码即可显示公众号登录还是小程序登录了。
官方文档: 微信公众平台开发概述 | 微信开放文档
2、服务号、订阅号的区别
服务号: 给企业和组织提供强大的业务服务与用户管理能力,帮助企业快速实现全新的公众号服务平台。 个人不能申请
订阅号: 为媒体和个人提供一种新的信息传播方式,构建与读者之间更好的沟通与管理模式。 个人可以申请
认证的服务号和订阅号功能更加强大,但手续相对可能也比较麻烦。
3、找到微信公众帐号测试号
扫码登录即可
登录成功,进入此页面
4、准备域名
微信公众号开发需要使用域名,域名映射本机ip地址推荐使用ngrok, 推荐的理由之一: 免费、操作方便。
ngrok下载网址: Sunny-Ngrok内网转发
ngrok后端登录网址: Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器
解压之后进入此文件夹,找到对应的程序。
开通ngrok账号
只有online状态才是连接成功的,其它情况代表连接不成功
5、appID、appsecret、URL、Token、access_token介绍
appID、appsecret是系统自动生成的,作用: 获取access_token时要用
URL就是你的域名+端口+项目路径, token随意书写就行了。 现在点击提交是没有意义的,需要后台程序验证消息是否来自微信服务器,并返回request.getParameter("echostr")的值才能提交成功,否则会报配置失败等错误信息;
access_token是后期一些高级功能需要获取的一个凭证,比如说 自定义菜单类、发送模板消息、素材管理等等,都需要使用到access_token
6、实现公众号与springboot相连接
点击提交,微信服务器将发送GET请求到填写的服务器地址URL上,并携带四个参数, 输出打印参数成功,代表微信服务器初步连通填写的服务器地址。
对请求开始检验,URL和Token才能填写成功
检验步骤:
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
Utils.java 工具类中进行字典序列排序以及加密、检验操作
public class Utils {
public static final String TOKEN="aabbccdd"; //TOKEN就是自己填写的
/*
* 验证签名
* */
public static boolean check(String timestamp, String nonce, String signature) {
//1、将token、timestamp、nonce进行字典排序
String[] strs = new String[]{TOKEN, timestamp, nonce};
Arrays.sort(strs);
//2、将三个参数字符串拼接成一个字符串进行sha1加密
String str = strs[0] + strs[1] + strs[2];
String mysignature = sha1(str);
//返回对比结果
return mysignature.equalsIgnoreCase(signature);
}
/*
* 加密方法
* */
private static String sha1(String src) {
try {
//获取一个加密对象
MessageDigest md = MessageDigest.getInstance("sha1");
//加密
byte[] digest = md.digest(src.getBytes());
char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
StringBuffer sb = new StringBuffer();
//处理结果集
for (byte b : digest) {
sb.append(chars[(b >> 4) & 15]);
sb.append(chars[b & 15]);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
TestweixinController.java
@RestController
public class TestweixinController {
@RequestMapping(value="/testWeixin",method = {RequestMethod.POST,RequestMethod.GET})
public void testWeixin(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
if(Utils.check(timestamp,nonce,signature)){
//校验正确并返回echostr,才能正式成为一名公众号开发者,即填写的URL和TOKEN才能生效
out.print(echostr);
}else{
//校验失败
out.print("---请到公众号执行相应操作---");
}
out.flush();
out.close();
}
}
目标效果
完成上述所有操作说明你对公众号开发有了初步了解!! 使用springboot进行公众号开发的详细操作请参考此博客: CSDN
更多推荐
所有评论(0)