分享好友 最新动态首页 最新动态分类 切换频道
Springboot微信公众号开发入门流程(校验签名、access_token获取、生成带参二维码、发送文字、图文消息、被动回复消息、图文消息静默跳转)
2024-12-28 06:38


微信公众号分为服务号、订阅号、企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以。

我们所说的微信公众号开发指的是订阅号和服务号。关于订阅号和服务号的区别,官方是这样解释的

  • 服务号**:主要偏向于服务交互(功能类似12315,114,银行,提供绑定信息,服务交互,每月可群发4条消息;服务号**适用人群:**媒体、企业、政府或其他组织。
  • 订阅号**:主要偏向于为用户传达资讯(功能类似报纸杂志,为用户提供新闻信息或娱乐趣事,每天可群发1条消息;订阅号适用人群:个人、媒体、企业、政府或其他组织。

因为微信用户每次向公众号发起请求时,微信服务器会先接收到用户的请求,然后再转发到我们的服务器上,微信服务器是要和我们的服务器进行网络交互,所以我们必须保证我们的服务器外网可以访问到,这种部署到公网服务器进行测试的做法对于我们开发者来说简直是噩梦。所以我们借用NATAPP可以实现内网穿透,意思就是我们可以将内网的服务器映射到外网给别人访问,这种方式会大幅度的减少我们的部署,调试时间,进行更加高效的编码。

可以参考微信的官方文档微信接入指南

接入微信公众平台开发,开发者需要按照如下步骤完成

  1. 填写服务器配置
  2. 验证服务器地址的有效性
  • url:是你的接口验证地址
  • token:可以随便进行填写,但是一定要与接口里面验证的token一致

点击提交验证服务器地址的有效性,这时微信服务器将发送一个http的get请求到刚刚填写的服务器地址,并且携带四个参数

参数描述signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp时间戳nonce随机数echostr随机字符串开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下
  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

WxcharController.java

 

WechatServiceImpl

 

一个工具类SHA1

 

一个异常类AesException

 

接口写完后,开始在测试号进行校验,成功后我们的公众号应用已经能够和微信服务器正常通信了,也就是说我们的公众号已经接入到微信公众平台了。

官方文档链接
我们的公众号和微信服务器对接成功之后,接下来要做的就是根据我们的业务需求调用微信公众号提供的接口来实现相应的逻辑了。在使用微信公众号接口中都需要一个access_token。

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

总结以上说明,access_token需要做到以下两点

  1. 因为access_token有2个小时的时效性,要有一个机制保证最长2个小时重新获取一次。
  2. 因为接口调用上限每天2000次,所以不能调用太频繁。

公众号可以使用AppID和AppSecret调用本接口来获取access_token。
接口调用请求说明

https请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

参数是否必须说明grant_type是获取access_token填写client_credentialappid是第三方用户唯一凭证secret是第三方用户唯一凭证密钥,即appsecret

返回说明
正常情况下,微信会返回下述JSON数据包给公众号

{“access_token”: “ACCESS_TOKEN”,“expires_in”:7200}

参数说明

参数说明access_token获取到的凭证expires_in凭证有效时间,单位:秒

pom引入依赖

 

静态常量类WechatConstants

 

一个工具类MyX509TrustManager

 

一个工具类WeixinUtil

 
 
 

一个定时任务AccessTokenThread

 

需要在启动类中添加注解@EnableScheduling用来启动定时任务

 

到这时,项目启动时已经可以自动获取access_token并且完成修改,之后定时任务会自动一个半小时执行一次进行修改。

最近微信更改了稳定版接口调用凭据,我使用之前的方法经常会获取到的access_token经常无法使用,现在更新一下稳定版接口调用凭证。

//添加一个处理微信POST请求的方法

 

然后把定时任务AccessTokenThread中的代码改为

 
 

微信官方文档生成带参二维码

目前有2种类型的二维码

  1. 临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
  2. 永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景

获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id,分别介绍临时二维码和永久二维码的创建二维码ticket过程。

临时二维码请求说明

http请求方式: POST URL:

https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

POST数据格式:json POST数据例子:{“expire_seconds”: 604800, “action_name”: “QR_SCENE”, “action_info”: {“scene”: {“scene_id”: 123}}} 或者也可以使用以下POST数据创建字符串形式的二维码参数:{“expire_seconds”: 604800, “action_name”: “QR_STR_SCENE”, “action_info”: {“scene”: {“scene_str”: “test”}}}

永久二维码请求说明

http请求方式: POST URL:

https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

POST数据格式:json POST数据例子:{“action_name”: “QR_LIMIT_SCENE”, “action_info”: {“scene”: {“scene_id”: 123}}} 或者也可以使用以下POST数据创建字符串形式的二维码参数: {“action_name”: “QR_LIMIT_STR_SCENE”, “action_info”: {“scene”: {“scene_str”: “test”}}}

参数说明

参数说明expire_seconds该二维码有效时间,以秒为单位。 最大不超过2592000(即30天,此字段如果不填,则默认有效期为60秒。action_name二维码类型,QR_SCENE为临时的整型参数值,QR_STR_SCENE为临时的字符串参数值,QR_LIMIT_SCENE为永久的整型参数值,QR_LIMIT_STR_SCENE为永久的字符串参数值action_info二维码详细信息scene_id场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1–100000)scene_str场景值ID(字符串形式的ID,字符串类型,长度限制为1到64返回说明正确的Json返回结果:

{“ticket”:“gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm
3sUw==”,“expire_seconds”:60,“url”:“http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI”}

参数说明ticket获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。expire_seconds该二维码有效时间,以秒为单位。 最大不超过2592000(即30天)。url二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片通过ticket换取二维码

获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。

请求说明

HTTP GET请求(请使用https协议)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET 提醒:TICKET记得进行UrlEncode

返回说明

ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。
错误情况下(如ticket非法)返回HTTP错误码404。

一个工具类QrcodeUtil

 

然后测试生成二维码

 

这时已经可以实现扫描二维码跳转公众号了。

微信官方文档接受普通消息 微信官方文档接收事件推送 微信官方文档被动回复用户消息 微信官方文档网页授权
这些文档中包含了接受普通消息,接收事件推送,被动回复用户消息,网页授权的一些xml案例,以及参数描述
可以详细阅读一下
具体的内容都在代码中展示,可以挑选自己需要的进行查看

引入依赖

 

在yml文件中填写一项域名,当然也可以一个一个放域名,然后修改,只不过有一些麻烦

 

一个工具类MessageUtil
使用的静默页面跳转,就是默认授权,用户不会感知到信息,直接跳转页面,如果想要传递参数,我通过网上试了试,目前session不行,我是使用的路径后用?拼接参数,前端拦截路径,获取到路径上的参数
记住跳转的前端最后路径不能带有#/,否则会在微信跳转的时候会报错

 

然后就是接口:是吧最开始的校验签名部分添加了一部分代码。
因为校验采用的是get请求,其余采用post请求,所以直接使用else即可,这里也就是微信的回调方法
用户通过关注进入微信后,会自动走入该方法。

最新文章
阅瓣免费小说手机版简介:
阅瓣免费小说下载是一款功能十分强大的看小说大全阅读器,海量的小说资源丰富类型一网打尽,全场的正版小说资源免费畅读,极速连载更新追书不等待,让您再无书荒。阅瓣,来了;全新的阅读体验,极强的书籍推荐,帮你寻找你最喜欢的书籍;清
Redmi,型号23013RK75C手机价钱?
红米K60和K60E是小米公司推出的两款手机,于2022年12月27日正式发布。这两款手机在质量上表现出色。Redmi K60拥有墨羽、晴雪、幽芒三种玻璃后盖配色,并且还有一款素皮晴蓝配色可供选择。它的厚度为8.59mm,重量为204g,同时还提供了一种稍
【Desire 5088搜狗手机输入法下载】HTC Desire 5088搜狗手机输入法12.1.1免费下载
搜狗输入法,拥有超大中文词库,输入更加精准,智能。搜狗智能旺仔带你用表达,斗图,妙语,输入更加有趣。******特色功能******【搜狗专属超大词库】搜狗多年积累,中文系统词库,输入首选更准确【语音输入】更快更准的语音输入,没有网络
影视全方位推广攻略解析指南
搭建影视推广全方位攻略解析:明确与内容,确保版权合法;优化界面与用户体验;利用SEO提高排名;通过社交媒体、广告等渠道推广;建立用户社区,增强用户粘性。全方位策略助力影视成功推广。影视策略影视搭建指南影视资源整合之道影视推广
乔丹是篮球之神,科比是最接近神的男人,詹姆斯是最全面的?
在NBA的辉煌历史中,有三位球员的名字几乎与篮球完美挂钩——迈克尔·乔丹、科比·布莱恩特和勒布朗·詹姆斯。这三位传奇巨星,不仅用他们的才华改变了比赛,也深刻影响了全球篮球文化。然而,若要评选出真正的“篮球之神”,我们是否能确
如何处理房屋外墙漏雨问题?处理外墙漏雨有哪些方法?
房屋外墙漏雨是许多业主面临的棘手问题,不仅影响居住舒适度,还可能损害房屋结构。以下为您详细介绍处理房屋外墙漏雨的方法和相关注意事项。1. 清理裂缝周围的杂物和灰尘,确保表面干净。2. 使用专用的裂缝修补剂填充裂缝,使其平整。如果
用AI画美女:一键生成你心目中的完美女神!
DeepArt:虽然DeepArt主要以艺术风格转化著称,但利用其强大的图层算法,用户也能生成极具艺术感的美女写真。这款工具最为出色的是它的背景处理和色彩搭配,可以将用户自己上传的照片转换成带有个性色彩的作品。然而,生成的效果相对较为抽
淘宝店推广怎么做?作者:小果 时间:2024-12-20 阅读:3527
淘宝店推广怎么做?哪些方法有效?在竞争激烈的电商市场中,淘宝店铺的推广成为了卖家们必须面对的重要课题。通过有效的推广策略,不仅可以提高店铺的曝光度和流量,还能显著提升销量和转化率。本文将介绍几种有效的淘宝店推广方法,帮助卖
网站SEO过程中容易被忽视的8大细节问题
内容详述1. 页面加载速度页面加载速度是影响用户体验和SEO排名的重要因素。如果网页加载过慢,用户会失去耐心,导致跳出率增加。搜索引擎也会对加载速度进行评估,过慢的加载速度会影响网站的排名。优化图片大小、使用CDN等技术手段提升页
web网页二维码怎么生成
将Web网页生成二维码,可以通过多种方法实现,以下是一些常用的方法:一、使用浏览器自带功能一些现代浏览器,如Firefox、搜狗、360等,都内置了生成二维码的功能。用户只需打开想要生成二维码的网页,在地址栏旁边寻找二维码图标,点击后
相关文章
推荐文章
发表评论
0评