微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能

2023-11-06

1、前言

做过微信开发的应该都有一点感触,就是他的开发文档不是一成不变的,接口有时候会被下线,但也不是一下子就不能用了,一般会兼容旧接口,然后提醒你使用新接口有更多好处。

如果接口真的直接下线了,也会提供另一种能够实现相同功能的接口给你替换。所以有天你以为代码都写好了,没有bug了,悠哉悠哉的时候,忽然产品经理说微信的哪个接口不能用了,快去改一下,不要惊讶,老老实实去改就对了哈。

这不,微信将小程序的模板消息接口下线了,之前用formid来调这个接口的功能都就用不了了。

看官方文档提示,是提供了订阅消息的功能来替换,顾名思义,要用户主动订阅了才可以发送成功,像下面这样:

除了这种订阅消息外,还有没有其他方法来实现同等效果呢,答案是of course。

翻阅小程序开发文档发现,官方还提供了一个统一服务消息的接口。为便于开发者对用户进行服务消息触达,简化小程序和公众号模板消息下发流程,小程序提供统一的服务消息下发接口。就是在小程序里发送公众号模板消息,这个好处就是不需要formid的

要注意:以下几类消息是目前不允许发的模板消息

1、模板内容与服务场景(含标题、关键词)不一致的模板

2、涉嫌广告营销类消息模板

3、发送频率过高,有骚扰用户倾向类消息模板

4、涉及红包、卡券、优惠券、代金券、会员卡、积分类消息模板

接下来我们就来实现下。

2、准备

调用这个接口的前提是公众号和小程序有绑定且是同主体的,这个好办,登录公众号后台 -> 小程序 -> 小程序管理 -> 添加即可绑定小程序。

因为实质上还是发的公众号模板消息,所以还是要在公众号后台添加消息模板获取模板id。

3、开发

好了,做好以上两个准备就可以开发了,主要代码如下面:

/**
* 在小程序里使用同主体的关联公众号发送模板消息
* https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
* @param vo
* @return   {"errcode":0,"errmsg":"ok"}   向没有关注公众号的用户发送会返回{"errcode":43004,"errmsg":"require subscribe hint: [LGcpYa05528672]"}
*/
public static JSONObject uniformSend(SendVo vo){
  boolean flag = false;
  JSONObject object = new JSONObject();
  JSONObject mpTemplateMsg = new JSONObject();
  JSONObject miniprogram = new JSONObject();
  String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token="+vo.getToken();
  object.put("touser", vo.getToUser());
  mpTemplateMsg.put("appid", vo.getPublicAppId());
  mpTemplateMsg.put("url", vo.getUrl());
  mpTemplateMsg.put("template_id", vo.getTemplateId());
  miniprogram.put("appid",vo.getMiniAppId());
  miniprogram.put("pagepath",vo.getPagePath());
  mpTemplateMsg.put("miniprogram",miniprogram);
  List<String> list = vo.getValue();
  JSONObject jsonObject = null;
  if (list != null && list.size() > 0) {
    int size = list.size();
    JSONObject data = new JSONObject();
    for (int i = 0; i < size; i++) {
      if (i == 0) {
        JSONObject first = new JSONObject();
        first.put("value",list.get(0));
        first.put("color",vo.getColor());
        data.put("first",first);
      } else if (i == size-1) {
        JSONObject remark = new JSONObject();
        remark.put("value",list.get(0));
        remark.put("color",vo.getColor());
        data.put("remark",remark);
      } else {
        JSONObject keyword = new JSONObject();
        keyword.put("value",list.get(i));
        keyword.put("color",vo.getColor());
        data.put("keyword"+i,keyword);
      }
    }
    mpTemplateMsg.put("data",data);
    object.put("mp_template_msg",mpTemplateMsg);
    jsonObject = CommonUtil.httpsRequestJson(url, "POST", object.toJSONString());
    logger.info("统一消息推送模板json======{}",jsonObject);
  }
  return jsonObject;
}

针对入参要说下mpTemplateMsg.put("data",data)里面的data这个参数,它是first.DATA,

(keyword1.DATA,keyword2.DATA。。。),remark.DATA组成的,所以for循环里面

拼接数据的时候要分三个,分别对应first.DATA,(keyword1.DATA,keyword2.DATA。。。),remark.DATA的字段值。

4、效果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能 的相关文章

  • 【计算机开题报告】智能社区管理系统

    一 设计目的及意义 随着经济的发展 人们生活水平的提高 工作和日常事务繁忙 人们对服务就有了更深入 更精细的要求 而计算机技术的迅猛发展 使得这种需求变为可能 传统的社区服务业也与互联网技术结合更加密切 这是社会发展的必然趋势 为解决社区中
  • 通过一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • 1-创建小程序项目

    注册 打开https mp weixin qq com 点击 立即注册 选择小程序 获取APPID 登录小程序在 开发管理 gt 开发设置 获取 APPID 开发工具 登录小程序在 开发工具 gt 开发者工具 获取 微信开发者工具 创建小程
  • 【OpenCV学习笔记02】- 图像入门

    内容 这里介绍了图像处理的入门操作 你将学习如何读取图像 如何显示图像以及如何将其保存回去 你将学习以下功能 cv imread cv imshow cv imwrite 简单使用OpenCV 读取图像 使用 cv imread 函数读取图
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【计算机毕业设计】航空信息管理系统

    传统信息的管理大部分依赖于管理人员的手工登记与管理 然而 随着近些年信息技术的迅猛发展 让许多比较老套的信息管理模式进行了更新迭代 飞机票信息因为其管理内容繁杂 管理数量繁多导致手工进行处理不能满足广大用户的需求 因此就应运而生出相应的航空
  • 【计算机毕业设计】精品课程在线学习系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统精品课程学习信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难
  • 【VUE毕业设计】基于SSM的在线课堂学习设计与实现(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 3 系统结构设计 4 项目获取
  • 构建Python随机密码生成器:保障账户安全的简易工具

    密码安全是当前数字时代的一个重要议题 在保护个人信息和账户安全方面 安全且可靠的密码是至关重要的 本文将带您逐步了解如何使用Python创建一个随机密码生成器 以生成高强度 难以猜测的密码 导言 在网络环境中 密码是保护个人账户和敏感信息的
  • 用CHAT写一份标题为职业教育教师教学能力提升培训总结

    CHAT回复 标题 职业教育教师教学能力提升培训总结 一 活动概述 本次由学校组织的职业教育教师教学能力提升培训于8月15日至8月20日顺利进行 来自全校的60位职业教育教师参与了此次培训 主讲人为享有盛名的教育专家马丁先生 二 培训内容与
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 【计算机毕业设计】北京医疗企业固定资产管理系统的设计与实现 _4c4c1

    近年来 人们的生活方式以网络为主题不断进化 北京医疗企业固定资产管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【计算机选题推荐】校园兼职小程序的设计与实现

    精彩专栏推荐订阅 在下方主页 作者主页 计算机毕设木哥 文章目录 一 项目介绍 二 开发环境 三 系统展示 四 代码展示 五 项目总结 font color fe2c24 大家可以帮忙点赞 收藏 关注 评论啦 一 项目介绍 随着高等教育的普
  • SpringBoot中整合ElasticSearch快速入门以及踩坑记录

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目 若依前后端分离版手把手教你本地搭建环境并运行项目 本地运行若依前后端分离 CSDN博客 参考上面搭建项目 ElaticSearch Elasticsearch 是java开发的 基于
  • 面试官:分库分表后如何生成全局ID?

    分库分表后就不能使用自增 ID 来作为表的主键了 因为数据库自增 ID 只适用于单机环境 但如果是分布式环境 是将数据库进行分库 分表或数据库分片等操作时 那么数据库自增 ID 就会生成重复 ID 从而导致业务查询上的问题 所以此时 可以使
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 手把手教你使用HarmonyOS本地模拟器

    我们通过下面的动图来回顾下手机本地模拟器的使用效果 本期 我们将为大家介绍HarmonyOS本地模拟器的版本演进 并手把手教大家使用HarmonyOS本地模拟器 一 本地模拟器的版本演进 2021年12月31日 经过一个版本的迭代优化 随D
  • 肿瘤的转录调控:Cell子刊揭示原发性肝癌中转录因子活性的全基因组图谱|国自然热点

    转录调控的研究历史比较长 相关研究在近十年来仍一直增长 也是近年来高分文章的焦点之一 在2023年最佳国自然 中标 研究热点 转录调控中标率高达189 作为国自然热点之一的肿瘤微环境的研究在近几年也一直处于上升趋势 转录调控在肿瘤发生 发展
  • 【学习分享】全志平台TWI子系统源码分析(1)从设备树到寄存器

    全志平台TWI子系统源码分析 1 从设备树到寄存器 前言 一 名词解释 二 从设备树入手看源码 1 TWI设备树 2 TWI源码位置 3 TWI总线相关寄存器 总结 前言 这次开坑主要是想把全志平台TWI子系统在源

随机推荐

  • icmp隧道工具之ptunnel使用

    一 ptunnel 攻击机A 192 168 137 135 安装ptunnel 跳板机B 192 168 137 130 安装ptunnel 靶机 C 192 168 137 133 1 安装支持库 yum install libpcap
  • DSP定点数的计算规则和示例

    目录 1 Q S表示法的数值范围 2 定点化加减法计算规则 2 1 防溢出处理 3 定点化乘法计算规则 3 1 推算 4 定点化除法计算规则 4 1 推算 5 程序代码中如何确定Q值 6 浮点转定点计算示例 1 Q S表示法的数值范围 Q表
  • 网易游戏测试开发,2023届秋招面经

    一面 技术面 40min 三个面试官 一个负责记录 另两个负责问问题 常规问题 自我介绍 询问简历上的项目经验 项目中遇到的难点是什么 简单介绍一下之前笔试题目的算法思想 谈谈这个题目 基础问题 1 数据结构 怎样打印出全排列 2 数据结构
  • 递归及递归的简单运用之4种方法解斐波那契数列

    什么是递归 若一个对象部分的包含自己或用它自己给自己定义 那么我们说这个对象是递归的 若一个过程直接或间接的调用自己 那么这个过程是递归的 递归的思想是把问题分解为规模更小具有与原问题相同解法的子问题 因此可以让我们思考的方式更加简单 程序
  • 《游戏编程》第一部 基础篇

    游戏编程 第一部 基础篇 目录 零 基础篇的目的 一 游戏的动画原理 二 基于动画原理的提高 三 游戏的基石 窗口 的建立 四 游戏制作利器 引擎 的选择文章内容 零 基础篇的目的 有了一个目标之后 往往人们比较有信心和动力 所以 我重新修
  • 深度学习Caffe实战笔记(1)环境搭建

    1 环境搭建 从知道深度学习开始 就一直想学习使用caffe 碍于各种事情一直没有如愿 这几天终于找了个时间搞了一下 打算把学习的过程整理成笔记 包括环境搭建 跑车牌识别数据 跑mnist数据 用Alexnet跑自己的数据 用Siamese
  • oracle分区

    用列做分区 分区原则是列的内容 create table custaddr id varchar2 15 byte not null areacode varchar2 4 byte partition by list areacode p
  • 【Google Drive 存储空间不够了怎么办】

    在进行深度学习的时候往往要将数据集存储在Google Drive上面 但是Google Drive的免费空间只有15G 怎么呢 因为别人有在Google Drive上的数据集 可以直接右键点击Short Cut 相当于在本地文件夹创建了一个
  • Idea整合Maven安装及配置教程(图文详解)

    目录 友情提醒 第一章 Maven概述 1 1 Maven是什么 1 2 Maven进行构建 build 的主要环节 第二章 Maven的下载安装和配置 2 1 Maven的下载 2 2 Maven环境变量配置 2 3 Maven文件set
  • mysql-redis事务的比较

    mysql redis事务的比较 最近刚好回去看redis的源代码 不得不说这个源代码写的真心不错 很有味道 刚好之前系统学了MySQL 于是就到了和redis进行对比作为本周博客主题 mysql acid 提到mysql的事务 trans
  • vba:inputbox

    inputbox函数与方法 1 区别一 外观区别 InputBox 函数 在一对话框来中显示提示 等待用户输入正文或按下按钮 并返回包含文本框内容的 String Application InputBox 方法 显示一个接收用户输入的对话框
  • 桌面路径改到D盘的目录下

    桌面路径改到D盘的目录下 首先在你的D盘先创建一个desk文件夹 然后在左边这里找到桌面 点击右击 属性 然后点击位置 把这个位置修改为刚才你在D盘所创建的文件夹的位置 这样就大功告成了 似不似so easy
  • MyBatis关系映射

    文章目录 前言 一 一对一映射 1 1 创建实体 1 2 xml配置 二 一对多映射 2 1 创建实体 2 2 resultMap配置 2 3 测试 三 多对多映射 3 1 创建实体 3 2 resultMap配置 3 3 测试 前言 My
  • 6-urdf

    URDF Unified Robot Description Format 统一机器人描述格式 基本概念 1 urdf 文件 定义机器人的结构 2 用于机器人的仿真 可视化 tf 3 ROS 的中包含一个urdf包 用来解析urdf文件 描
  • CSDN为什么会发展社区?看看官方怎么说

    文章目录 课前小差 23年可兼收名利 博客之星 红包活动 相聚线下 妙笔生花 原力计划 个人定位 为什么要发展社区 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得到CSDN王总的授权 来对于我们每周四的绿萝时间
  • 乐观锁实现接口幂等性_Elasticsearch系列---并发控制及乐观锁实现原理

    概要 本篇主要介绍一下Elasticsearch的并发控制和乐观锁的实现原理 列举常见的电商场景 关系型数据库的并发控制 ES的并发控制实践 并发场景 不论是关系型数据库的应用 还是使用Elasticsearch做搜索加速的场景 只要有数据
  • Qt中的项目类型(二)

    使用Qt进行软件开发 第一个要考虑的问题就是为需要开发的软件 选择一个合适的Qt项目类型 Qt中的项目类型有 Application 应用 项目 项目编译结果是可执行程序 Library 库 项目 项目编译结果是静态库或动态库 其他项目 辅
  • 登录功能使用Base64进行加密(解密) ---jsp页面以及servlet页面。(废了。不安全。。。。。)

    使用Base64在服务器端进行加密 String 加密后的字符串 Base64 getEncoder encodeToString 需要加密的字符串 getBytes byte 解密后的byte数组 Base64 getDecoder de
  • Markdown没能生成表格问题

    小白刚使用MD时不知道怎样弄出表格 刚开始使用Markdown 的时候 不知道怎样转换成表格 看了网上的 直接用下面的方法就可以了 但是为什么我的就是不出现表格呢 dog bird cat foo foo foo bar bar bar b
  • 微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能

    1 前言 做过微信开发的应该都有一点感触 就是他的开发文档不是一成不变的 接口有时候会被下线 但也不是一下子就不能用了 一般会兼容旧接口 然后提醒你使用新接口有更多好处 如果接口真的直接下线了 也会提供另一种能够实现相同功能的接口给你替换