JAVA微信小程序/公众号推送

微信官方文档解读

首先说一下小程序:小程序现在都是订阅消息了,小程序模板消息接口已经被废弃。其中订阅消息分为两种。
第一种:一次性订阅消息。官方解析为:

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发。
一条对应的服务消息;每条消息可单独订阅或退订。

需要注意的是:一次单独的订阅,只能接收一次消息下发
第二种:长期订阅消息。官方解释为:

一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。
目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
微信文档链接:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html

这个需要注意的是:目前很多企业没有这个资质去使用长期订阅!至于你的企业有没有这个资质,可以自己查询一下。

再说一下公众号:公众号有模板消息也有一次性订阅消息,我使用的是模板消息。模板消息官方给出的描述为:

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
微信文档链接:
https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#5

小程序我用的是一次性订阅消息,下面就说明一下小程序一次性订阅和公众号模板消息。仅供参考,不保证百分之百正确哦。

模板申请添加

首先第一步:获取模板
这个模板,需要登录小程序管理后台,先打开消息权限(这步很重要,不然你都是用不了),然后点击订阅消息。一开始进去,我的模板里面是没有的。
在这里插入图片描述
点到公共模板库里面,里面是有很多别的企业申请的模板,如果看到有合适的,可以直接添加,但是基本上百分之九十都不太合适,这个时候就需要自己申请一个新模板了。
在这里插入图片描述
点到最后一页,然后点 帮我们完善模板库。别问为什么要到最后一页,去就行了!
在这里插入图片描述
接下来就是一个模板内容的填写了。注意内容是什么就选什么参数类型,这个之后代码会用到。一般头几次申请多多少少都有问题,审核不通过,然后根据不通过的内容改改就行了,多来几次,也就过了。但是有时候审核速度非常慢,建议早点开始申请。

申请通过后,再去我的模板那添加,选中公共模板库里面你申请通过的那个模板就行了。
添加成功后,记得看看详情,里面的东西会用到!
在这里插入图片描述

模板id和内容的参数类型推送代码都会用到。到这,推送的消息模板就有了。公众号的添加消息模板步骤和小程序的差不多,就不再说了。
下面开始消息推送。

消息推送接口

调用微信的接口,access_token肯定是需要的。拿access_token可以参考一下官方:

获取access_token官方链接:
https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html

这里主要说消息推送,获取access_token就不详细说了。
订阅消息的发送也可以直接看一下官方的连接:

发送订阅消息官方链接:
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

当然,也可以看看我下面写的,我肯定是没有意见的。
我使用的是https调用。首先看一下接口的地址:

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN

再看看必传字段:
在这里插入图片描述
access_token作为访问秘钥肯定是必传的;touser谁来接收这个消息,也是必传的,而且必须是用户在此小程序的openid;template_id消息模板的id,比传的,就是上面模板让你看详情里面的那个模板ID;然后data内容,也是必传的,内容就是对模板消息内容的填充(具具体如何填充后面说)。
剩下的都是非必填的字段了,其中page还是重要一点的。如果你的推送消息需要跳转到小程序,这个是需要传的,需要注意的是:里面的内容,你需要把参数都拼接好,免得跳转进去请求接口没有数据。至于miniprogram_state和lang参数,看自己喜欢咯。
然后我们再看看返回的数据:
在这里插入图片描述
嗯,就是一个微信的正常接口返回数据。根据errcode可以判断是否执行成功,一般0是成功。其他错误码代表的意思可以再官方查阅。注意定义errcode不要定义为包装类型哦,因为有时候成功了,微信那边errcode会返回null。

说一下公众号的接口和这个的差异:

公众号模板推送接口
POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

在这里插入图片描述
说一下参数:touser、template_id、data和小程序一致,都是必传,然后data结构稍微有点不同。由于公众号跳转是跳转小程序,所以需要指明是哪个小程序,所以需要传miniprogram对象。miniprogram对象中appid为跳转小程序的appid,必传,pagepath为跳转小程序的页面,跟小程序的一样,参数都需要拼接好

好了,接口说完了,说一下具体的设计和调用。

消息推送设计

菜鸟设计,不喜勿碰哦。
首先小程序的access_token缓存到redis。
好了,元旦了,剩下的下次在写吧。

### 微信小程序集成公众号消息推送教程 #### 一、准备工作 确保已经拥有并配置好微信公众号以及小程序账号,在微信公众平台上完成相应设置。这包括但不限于获取AppID和AppSecret等必要参数,这些将在后续开发过程中频繁使用[^3]。 #### 二、引入官方组件 在页面中添加`<official-account>`标签用于展示关联的小程序入口,并通过事件绑定函数处理加载逻辑: ```html <!-- wxml 文件 --> <view> <!-- 关联已认证的服务号或订阅号 --> <official-account bindload="onOfficialAccountLoad"></official-account> </view> ``` ```javascript // js文件 Page({ onOfficialAccountLoad(e) { console.log('Official account loaded:', e.detail); } }); ``` 此部分操作允许用户从小程序内部访问指定的公众号资料页,从而促进两者之间的互动。 #### 三、服务器端对接口的支持 对于希望向关注者发送模板消息的情况,则需依赖于后端服务来调用微信API接口。这里推荐采用Spring Boot框架构建RESTful API作为中介层,负责接收来自前端请求并向微信服务器发起HTTP POST请求以触发具体的消息推送行为[^1]。 - **创建Controller类** ```java @RestController @RequestMapping("/wx") public class WxMessageController { @Autowired private WxMpService wxMpService; @PostMapping("/sendTemplateMsg") public ResponseEntity<String> sendTemplateMsg(@RequestBody Map<String, String> params){ try{ // 构建模板数据对象... WxMpTemplateMessage templateMessage = new WxMpTemplateMessage(); // 设置模板id和其他属性... boolean result = wxMpService.getTemplateMsgService().send(templateMessage); if(result){ return ResponseEntity.ok("Success"); }else{ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to send message."); } }catch(Exception ex){ log.error(ex.getMessage(),ex); return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); } } } ``` 上述代码片段展示了如何定义一个简单的控制器方法用来接受从前端传来的JSON格式的数据包,解析其中的信息填充到`WxMpTemplateMessage`实例里再经由MP SDK执行实际的通知动作。 请注意,以上仅为简化版示例,真实项目可能还需要考虑更多细节如安全性验证、错误重试机制等方面的设计。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值