微信小程序:发送小程序订阅消息

文档:小程序订阅消息(用户通过弹窗订阅)开发指南

目录

    • 步骤一:获取模板 ID
    • 步骤二:小程序端获取参数
      • 2.1、获取消息下发权限
      • 2.2、获取登录凭证(code)
    • 步骤三:后端调用接口下发订阅消息
      • 3.1、获取OPENID
      • 3.2、获取ACCESS_TOKEN
      • 3.3、下发订阅消息

步骤一:获取模板 ID

在微信公众平台(https://mp.weixin.qq.com)手动配置获取模板 ID
在这里插入图片描述

步骤二:小程序端获取参数

2.1、获取消息下发权限

文档:一次性订阅消息、长期订阅消息

示例代码

const res = await wx.requestSubscribeMessage({
  tmplIds: ['']
})

console.log(res)

2.2、获取登录凭证(code)

文档:接口获取登录凭证(code)

const loginRes = await wx.login()

if(loginRes.code){
	console.log(loginRes.code)
}

步骤三:后端调用接口下发订阅消息

3.1、获取OPENID

使用 小程序端获取的登录凭证(code)通过服务端接口获取openid

文档:小程序登录

请求数据示例

GET https://api.weixin.qq.com/sns/jscode2session?
appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 

返回数据示例

{
	"openid":"xxxxxx",
	"session_key":"xxxxx"
}

注意:这里和文档不一样,接口调用成功时,不会返回unioniderrcodeerrmsg

3.2、获取ACCESS_TOKEN

文档:获取接口调用凭据

请求数据示例

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

返回数据示例

{
  "access_token":"ACCESS_TOKEN",
  "expires_in":7200
} 

3.3、下发订阅消息

文档:一次性订阅消息、长期订阅消息,服务端接口

请求数据示例

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

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "miniprogram_state":"developer",
  "lang":"zh_CN",
  "data": {
      "number01": {
          "value": "339208499"
      },
      "date01": {
          "value": "2015年01月05日"
      },
      "site01": {
          "value": "TIT创意园"
      } ,
      "site02": {
          "value": "广州市新港中路397号"
      }
  }
} 

返回数据

{
	"errcode":0,
	"errmsg":"ok"
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/309386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从生活入手学编程(1):Edge浏览器设置自动刷新专业教程

一、前言 我们都知道,Edge浏览器运行时的速度卡的实在是感人…… 于是今天,我就突发奇想,来看一看怎么刷新并且还能保留页面内容。 二、探索 首先,我在此提醒您,在使用这种方法时要非常小心。因为更改网页源代…

一级倒立摆控制 - 非线性 MPC 控制及 MATLAB 实现

系列文章目录 前言 本示例使用非线性模型预测控制器对象和块实现对小车上倒立摆的摆动和平衡控制。 本示例需要 Optimization Toolbox™ 软件为非线性 MPC 提供默认的非线性编程求解器,以计算每个控制间隔的最优控制动作。 一、摆锤/小车装配 本例中的被控对象是…

[笔记]学习做微信小程序

学习视频:前端微信小程序开发教程 本篇文章 只对关键内容笔记,用于自用。 这里写目录标题 注册、下载、安装我的小程序ID:wxe1fbd6939d8797d8我的小游戏ID:wx8b2c3e47ac9127b7开发者工具外观代理设置 创建第一个小程序主界面5个组…

Redis:原理速成+项目实战——Redis实战8(基于Redis的分布式锁及优化)

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理速成项目实战——Redis实战7(优惠券秒杀细节解决超卖、一人一单问题) &#x1f4d…

C语言数组基础知识

目录 一维数组: 一维数组的创建: 一维数组的访问: 一维数组在内存中的存储: 二维数组: 二维数组的创建: 二维数组的初始化: 二维数组的使用: 二维数组在内存中的存储&#x…

UE5 将类修改目录

有个需求,需要修改ue里面类的位置,默认在Public类下面,我想创建一个二级目录,将所有的类分好位置,方便查看。 上图为创建一个类所在的默认位置。 接下来,将其移动到一个新的目录中。 首先在资源管理器中找…

kubeSphere DevOps自定义容器环境JDK11

kubeSphere DevOps自定义容器环境JDK11 🍂前言🍂增加JDK11容器环境🍁检查是否成功 🍂不生效的原因排查🍁按步骤执行如下命令 🍂前言 kubeSphere 版本v3.1.1 遇到问题:kubeSphere默认支持容器只有JDK8,目前…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(1) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

接口测试管理续集

今天应大家需要,接着谈app端数据返回层面的用例设计方法。第二部分给大家安利一个“接口管理平台”,以帮助大家解决接口文档维护、接口测试数据Mock、接口自动化测试等问题。希望对小伙伴们有用。 言归正传,进入今天的话题。 一、用例设计 …

【大数据OLAP引擎】StartRocks存算分离

存算分离的原因 降低存储成本:同样的存储大小对象存储价格只有SSD的1/10,所以号称存储成本降低80%不是吹的。 存算一体到存算分离 存算一体 作为 MPP 数据库的典型代表,StarRocks 3.0 版本之前使用存算一体 (shared-nothing) 架构&#xf…

Flink任务实战优化

前言:一个好产品,功能应该尽量包装在服务内部;对于Flink而言,无疑是做到了这一点。但是用户在使用Flink的时候,依然可以从版本的选择、代码逻辑、资源参数、业务的数据情况等方面做任务级的定制化优化;用最…

OpenMv颜色识别

本文旨在分享OpenMv实现数字识别并通过串口打印出来的工程源码。如果大家想将识别的结果传给单片机,即OpenMv与单片机之间的通信,可以参考以下文章: OpenMV与STM32之间的通信(附源码)_openmv与stm32串口-CSDN博客 ​​…

webpack学习笔记

为什么要使用Webpack webpack是一个用于现代JavaScript应用程序的静态模块打包工具。在webpack里一切文件皆模块,通过loader转换文件,通过plugin注入钩子,最后输出由多个模块组合成的文件,webpack专注构建模块化项目。 webPack可以…

HTTPS详解及openssl简单使用

本文介绍https传输协议中涉及的概念,流程,算法,如何实现等相关内容。 HTTP传输过程 HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,至于为什么不安全,看了下面这张图就一目了然了 HTTP 在传输数据的过程…

pulsar的架构与特性记录

一、什么是云原生 云原生的概念是2013年Matt Stine提出的,到目前为止,云原生的概念发生了多次变更,目前最新对云原生定义为: Devps持续交付微服务容器 而符合云原生架构的应用程序是: 采用开源堆栈(K8SDocker)进行容器化,基于微服务架构提高灵…

java.net.ConnectException: Connection refused: connect已解决

🥚今日鸡汤🥚 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 —— 《枫》 遇见问题莫着急,着急也没用~😶‍🌫️ 目录 🧂1.令人发麻的问题 &am…

vue/vue3/js来动态修改我们的界面浏览器上面的文字和图标

前言&#xff1a; 整理vue/vue3项目中修改界面浏览器上面的文字和图标的方法。 效果&#xff1a; vue2/vue3: 默认修改 public/index.html index.html <!DOCTYPE html> <html lang"en"><head><link rel"icon" type"image/sv…

Logstash:迁移数据到 Elasticsearch

在生产环境中&#xff0c;不使用 Apache Kafka 等流平台进行数据迁移并不是一个好的做法。 在这篇文章中&#xff0c;我们将详细探讨 Apache Kafka 和 Logstash 的关系。 但首先让我们简单了解一下 Apache Kafka 的含义。 Apache Kafka 是分布式流平台&#xff0c;擅长实时数据…

Qt QRadioButton单选按钮控件

文章目录 1 属性和方法1.1 文本1.2 选中状态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的单选按钮类是QRadioButton它是一个可以切换选中&#xff08;checked&#xff09;或未选中&#xff08;unchecked&#xff09;状态的单选按钮单选按钮常用在“多选一”的场…

【Python学习】Python学习12-字典

目录 【Python学习】Python学习12-字典 前言创建语法访问列表中的值修改与新增字典删除字典元素Python字典内置函数&方法参考 文章所属专区 Python学习 前言 本章节主要说明Python的字典&#xff0c;是可变的容器&#xff0c;每个字典由键值对组成用冒号隔开&#xff0c;…