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参数是一个嵌套的结构,需要特殊处理一下。

微信订阅推送通知实现相关推荐

  1. 如何使用WordPress推送通知和智能通知插件

    什么是推送通知? 推送通知是由应用程序和网站传输的简短信息性消息,可以随时传达给受众. 与当访客在网站或浏览器上时显示的弹出窗口不同,即使访客不在网站上,也会显示推送通知. 推送通知使您可以向启用了用 ...

  2. 怎么构建有推送通知的 GitHub 跟踪器,你知道吗

    在本文中,您将学习如何构建一个 GitHub 跟踪器,当跟踪的存储库中有新的问题/PR 时,它会通过发送推送通知来通知用户. 如果您选择加入,GitHub 已经通过电子邮件发送通知,但许多研究表明,推 ...

  3. PHP调用微信消息订阅推送

    分享一下消息订阅推送 相信小伙伴们在做项目的时候都会有消息订阅推送的功能,比方说做外卖项目或者是商城的时候, 用户下单,需要给用户微信推送一条订阅消息 废话不多说 直接上代码 1.首先需要在微信小程序 ...

  4. QQ不如微信简洁?三分钟教你关闭各种推送通知,干净程度不输微信

    不少粉丝都和我讨论过这样一个问题,那就是为什么现在很多人都不再使用QQ,转而开始使用微信?其中的原因有很多,但是关于QQ推送太过杂乱是很多人的心病,所以今天特地来教大家各类推送在哪里可以关闭. 一.辅 ...

  5. iphone有关QQ和微信无法收到推送通知的终极解决方案

    最近自己的iPhone4s使用微信和QQ时无法收到推送通知,手机是越狱的,从网上搜索试了很多办法都不行,最后找到了一个终极的解决方法,下面我就贴出这个方法: 手机症状:进入需要推送的程序前出现&quo ...

  6. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台

    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...

  7. js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日

    文章目录 微信测试号推送消息 一.申请微信测试号 二.下载nodeJs 1.下载安装包 2.检查是否安装成功 三.设置测试号发送信息的模板 四.编写发送消息代码(必须装好nodeJs) 1.编写代码 ...

  8. 20个海外Web和App推送通知服务工具(一)

    在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...

  9. JavaScript是如何工作的: Web推送通知的机制

    摘要: 如何在Web端推送消息? 原文:JavaScript是如何工作的: Web推送通知的机制 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是专门探索 JavaScript 及 ...

最新文章

  1. 皮一皮:颜值的重要。。。
  2. 21天让你成为Horizon View高手—Day20:证书管理
  3. hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程
  4. 实例分享--告诉你如何使用语音和自然语言控制智能家居
  5. Powerdesigner导出ORACLE形式sql文件遇到的问题总结
  6. vmware上的ubuntu与window共享folder(shared folder disabled.)
  7. snmp是什么层协议_率先拥抱TSN——CC-Link发布新一代网络协议CC-Link IE TSN
  8. 2014 年 1 月 21 日国内互联网根域名服务器 (DNS) 故障是什么原因?
  9. HanLP Demo(学习笔记)
  10. cad线性标注命令_CAD线性标注快捷键是什么,怎么使用
  11. xposed修改微信步数
  12. 让联想 IdeaPad 710s-13ISK 遇到最新版黑苹果macOS Mojave 10.14.5
  13. 2022-2028年中国锂锰电池行业市场调查及未来前景预测报告
  14. Easyui文件上传格式限制
  15. MBE清新风格毕业答辩PPT模板
  16. sybase 珍藏(二)
  17. oracle 建立分区,oracle 分区表的建立方法
  18. 继电器控制模块的一些知识
  19. 【企业邮箱申请】网易企业邮箱陌生人来信安全提醒功能
  20. android中dalvik虚拟机参数

热门文章

  1. 快速学习Groovy
  2. awk中RS,ORS,FS,OFS区别与联系
  3. Macbook Pro 启动Win7的过程中黑屏(black screen)
  4. 数字全角转半角VBA
  5. 实现安全登录的两种方法
  6. 盘点2016年人工智能与深度学习领域的十大收购
  7. 20135323符运锦---信息安全系统设计基础第一周学习总结
  8. ubuntu 出现device not managed,解决方法
  9. EfficientNetV2网络详解
  10. 在计算机上知道手机密码,不知道密码查手机通话记录:傻瓜式教程