微信订阅推送通知实现
1. 微信文档
微信官方文档
选择开发对应类型的文档打开,如下
2. 获取接口
微信所有的接口都需要先获取token(如何获取这里不做赘述),拿到token后首先调用户获取个人模板列表接口拿到模板id
![在这里插入图片描述](https://img-blog.csdnimg.cn/40e46cd762364687965a3af94d7d70f0.png
该方法只有一个入参token,输出主要用到的参数就是priTmplId,模板id
然后调用发送订阅消息接口
微信收到的通知如下
如果没有授权订阅会返回这个
3. 后端实现
创建订阅通知接口的vo对象
//lombok注解
@Data
@Accessors(chain = true)
public class WxSendVo {@ApiModelProperty("所需下发的订阅模板id")private String template_id;@ApiModelProperty("点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转")private String page;@ApiModelProperty("接收者(用户)的 openid")private String touser;@ApiModelProperty("模板内容,格式形如 { \"key1\": { \"value\": any }, \"key2\": { \"value\": any } }的object")private Map<String, Object> data;@ApiModelProperty("跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版")private String miniprogram_state;@ApiModelProperty("进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN")private String lang = "zh_CN";
}
调用方法
//sendUrl https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=@Value("${weixin.sendUrl}")private String sendUrl;public ServiceResponse<Boolean> send(WxSendVo wxSendVo) {//微信tokenString wxToken = redisTemplate.opsForValue().get(RedisKeyUtils.WX_TOKEN);String url = sendUrl + wxToken;Map<String, Object> data = wxSendVo.getData();HashMap<String, Map<String, Object>> map = new HashMap<>(16);//构建data参数格式data.forEach((key, value) -> {HashMap<String, Object> one = new HashMap<>(16);one.put("value", value);map.put(key, one);});JSONObject jsonObject = new JSONObject();BeanUtil.copyProperties(wxSendVo, jsonObject);jsonObject.set("data", map);HttpRequest httpRequest = HttpRequest.post(url).body(jsonObject.toString()).contentType("application/json");HttpResponse execute = httpRequest.execute();String body = execute.body();try {JSONObject jsonObject1 = JSONUtil.parseObj(body);if (!Objects.equals(jsonObject1.getStr("errcode"), "0")) {return ServiceResponse.error(body);}} catch (Exception e) {return ServiceResponse.error(e.toString());}return ServiceResponse.ok(Boolean.TRUE);}
注意: 我的token处理是放到redis里面,这里直接从里面取了。订阅消息接口的数据必须以json格式发起调用,HttpRequest使用的hutool的工具类包,data参数是一个嵌套的结构,需要特殊处理一下。
微信订阅推送通知实现相关推荐
- 如何使用WordPress推送通知和智能通知插件
什么是推送通知? 推送通知是由应用程序和网站传输的简短信息性消息,可以随时传达给受众. 与当访客在网站或浏览器上时显示的弹出窗口不同,即使访客不在网站上,也会显示推送通知. 推送通知使您可以向启用了用 ...
- 怎么构建有推送通知的 GitHub 跟踪器,你知道吗
在本文中,您将学习如何构建一个 GitHub 跟踪器,当跟踪的存储库中有新的问题/PR 时,它会通过发送推送通知来通知用户. 如果您选择加入,GitHub 已经通过电子邮件发送通知,但许多研究表明,推 ...
- PHP调用微信消息订阅推送
分享一下消息订阅推送 相信小伙伴们在做项目的时候都会有消息订阅推送的功能,比方说做外卖项目或者是商城的时候, 用户下单,需要给用户微信推送一条订阅消息 废话不多说 直接上代码 1.首先需要在微信小程序 ...
- QQ不如微信简洁?三分钟教你关闭各种推送通知,干净程度不输微信
不少粉丝都和我讨论过这样一个问题,那就是为什么现在很多人都不再使用QQ,转而开始使用微信?其中的原因有很多,但是关于QQ推送太过杂乱是很多人的心病,所以今天特地来教大家各类推送在哪里可以关闭. 一.辅 ...
- iphone有关QQ和微信无法收到推送通知的终极解决方案
最近自己的iPhone4s使用微信和QQ时无法收到推送通知,手机是越狱的,从网上搜索试了很多办法都不行,最后找到了一个终极的解决方法,下面我就贴出这个方法: 手机症状:进入需要推送的程序前出现&quo ...
- Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台
由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...
- js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日
文章目录 微信测试号推送消息 一.申请微信测试号 二.下载nodeJs 1.下载安装包 2.检查是否安装成功 三.设置测试号发送信息的模板 四.编写发送消息代码(必须装好nodeJs) 1.编写代码 ...
- 20个海外Web和App推送通知服务工具(一)
在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...
- JavaScript是如何工作的: Web推送通知的机制
摘要: 如何在Web端推送消息? 原文:JavaScript是如何工作的: Web推送通知的机制 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是专门探索 JavaScript 及 ...
最新文章
- 皮一皮:颜值的重要。。。
- 21天让你成为Horizon View高手—Day20:证书管理
- hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程
- 实例分享--告诉你如何使用语音和自然语言控制智能家居
- Powerdesigner导出ORACLE形式sql文件遇到的问题总结
- vmware上的ubuntu与window共享folder(shared folder disabled.)
- snmp是什么层协议_率先拥抱TSN——CC-Link发布新一代网络协议CC-Link IE TSN
- 2014 年 1 月 21 日国内互联网根域名服务器 (DNS) 故障是什么原因?
- HanLP Demo(学习笔记)
- cad线性标注命令_CAD线性标注快捷键是什么,怎么使用
- xposed修改微信步数
- 让联想 IdeaPad 710s-13ISK 遇到最新版黑苹果macOS Mojave 10.14.5
- 2022-2028年中国锂锰电池行业市场调查及未来前景预测报告
- Easyui文件上传格式限制
- MBE清新风格毕业答辩PPT模板
- sybase 珍藏(二)
- oracle 建立分区,oracle 分区表的建立方法
- 继电器控制模块的一些知识
- 【企业邮箱申请】网易企业邮箱陌生人来信安全提醒功能
- android中dalvik虚拟机参数