【Node.js】实现微信小程序订阅消息推送功能

news2024/10/7 4:30:12

实战项目名称:实现微信小程序订阅消息通知

文章目录

  • 一、实战步骤
    • 1. 登录微信小程序管理端,添加订阅消息模板
    • 2. 定义好需要发送的消息
    • 3.获取小程序的access_token
    • 4. 发起请求,向用户推送消息
    • 4. 小程序端添加接收订阅消息的按钮
  • 二、完整源代码
  • 三. 需要注意的地方


一、实战步骤

1. 登录微信小程序管理端,添加订阅消息模板

登录后,在功能 > 订阅消息 > 公共模板库 ,然后去添加你需要的模板

  • 注意下图红线部分的内容,下一步用的到
    在这里插入图片描述

2. 定义好需要发送的消息

// 示例代码,对应上方红线的内容
let messages =
        {
            touser: '********************',//给某用户推送的openid,这个得你获取到用户的openid,才可以进行推送
            template_id: 'xxxxxxxxxxxxxxxxxxxxxxx', //订阅模板id
            data: {
                character_string1: {
                    value: 'order_87689176582576'// 订单号
                },
                amount13: {
                    value: '9999.00' //订单金额
                },
                amount4: {
                    value: '9999.00' //支付金额
                }
            }
        }

3.获取小程序的access_token

// config.app.appid 对应小程序的appid
// config.app.secret 对应小程序的秘钥
 const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${config.app.appid}&secret=${config.app.secret}`
        const responses = await axios.get(url)
            .then(function (response) {
                // 处理成功情况
                return response.data
            })
            .catch(function (error) {
                // 处理错误情况
                console.log(error);
            })

4. 发起请求,向用户推送消息

这里有用到request插件,记得 npm install request 或者 yarn add request;

  • 然后记得引用就好了 import request from 'request'
// responses.access_token就是上一步我们拿到的access_token

 const urls = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${responses.access_token}`
       
        const options = {
            method: 'post',
            url: urls,
            json: messages //第二步定于的消息内容
        }
        request(options, function (err, res, body) {
            if (err) {
                console.log(err)
            } else {
                if (body.errcode !== 0) {
                    console.log(body)
                }
            }
        })

4. 小程序端添加接收订阅消息的按钮

// 点击后,会弹窗一个授权窗口,同意之后就可以进行测试订阅消息推送了

uni.requestSubscribeMessage({
					// 模板id:可以在微信公众平台 -> 功能 -> 订阅信息进行选择
					tmplIds: ['3pDRw50ype8nrg8ntqeiBnhFPzQ_kpADrPWsFhwhtNI'],
					success: res => {
						console.log(res)
					},
					fail: e => {
						console.log(e)
					}
				})

二、完整源代码

 async startToast(_, { id }) {

        let messages =
        {
            touser: '********************',//给某用户推送的openid
            template_id: 'xxxxxxxxxxxxxxxxxx',//订阅模板id(上面提到的)
            data: {
                character_string1: {
                    value: 'order_87689176582576'// 订单号
                },
                amount13: {
                    value: '9999.00' //售后单号
                },
                amount4: {
                    value: '9999.00' //退款时间
                }
            }
        }

        const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${config.app.appid}&secret=${config.app.secret}`
        const responses = await axios.get(url)
            .then(function (response) {
                // 处理成功情况
                return response.data
            })
            .catch(function (error) {
                // 处理错误情况
                console.log(error);
            })
        // console.log(responses)
        const urls = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${responses.access_token}`
        // console.log(urls)
        const options = {
            method: 'post',
            url: urls,
            json: messages
        }
        request(options, function (err, res, body) {
            if (err) {
                console.log(err)
            } else {
                if (body.errcode !== 0) {
                    console.log(body)
                }
            }
        })
    },


三. 需要注意的地方

    1. 一次订阅对应一次消息推送,目前没有长期订阅的方案
    1. 小程序端和node.js后端中的模板ID注意一定要一致,不然推送不了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python+Django的学生作业提交批改管理系统

在各学校的教学过程中,学生的作业管理是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及,“基于网络的学习模式”正悄无声息的改变着传统的教室学习模式,“基于网络的教学平台”的研究和设计也成为教育技术领域的热点课题。采用…

ZeroTier实现内网穿透详细教程,其实5分钟就可以搞定

想看更详细的视频教程,推荐到哔哩哔哩上看:强大的内网穿透工具ZeroTier,随时随地远程访问家中NAS和其它设备!没有公网IP也不怕_哔哩哔哩_bilibili 相信很多人都有远程连接家中设备的需求,如远程连接家中的NAS、Window…

基于JAVA的书舍管理系统的设计与实现

摘 要 随着图书馆规模的不断扩大,人流数量的急剧增加,有关图书馆的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有书舍管理系统来提高图书馆工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询&#xff…

python 算法加密

加密代码片段样例 文件名:iter_n.py import timedef iter_from_n(n):list_n []for index,value in enumerate(range(n)):list_n.append([index,value])return list_nif __name__"__main__":t1 time.time()iter_from_n(100000)t2 time.time()print (&…

精彩预告 | 美创科技与您线上相约第十三届中国数据库技术大会

12月14日~16日,由IT168联合旗下ITPUB、ChinaUnix两大技术社区主办的第13届中国数据库技术大会(DTCC2022)将在线上隆重召开。 作为一家在数据库技术领域深研探索十余年的厂商,美创科技持续专注推动数据库技术的发展与实践。此次大会…

在平台上便捷使用LS-DYNA的方式

LS-DYNA 由Livermore Software Technology Corporation (LSTC) 开发,是一种多用途的显式和隐式有限元和多物理场程序,用于分析结构的非线性响应;其全自动接触分析和广泛的材料模型使全球用户能够解决复杂的现实问题。 这里要注意的是&#x…

【Vue】Vue2基本使用

文章目录一、模板语法1、插值语法写法介绍2、指令语法写法介绍模板语法示例二、数据绑定介绍数据绑定示例效果三、初始化Vue时,data属性与el属性的两种写法el的两种写法data的两种写法演示案例四、MVVM模型介绍五、数据代理JS数据代理案例演示Vue数据代理介绍原理六…

汽车自动驾驶的L0-L5是什么意思?

一、问题 汽车L0、L1、L2、L3、L4、L5自动驾驶都是什么意思呢? 近年来「自动驾驶」对我们来说不再陌生,很多人虽然早有所闻,但是真不懂自动驾驶的L0、L1、L2、L3、L4、L5是什么意思,都有哪些功能,今天就来为大家科普一…

什么蓝牙耳机质量好?公认最好用的蓝牙耳机推荐

现如今,蓝牙耳机在人们的日常使用设备当中扮演着较为重要的角色。无论是听歌、玩游戏、追剧、通话等,都可以通过蓝牙耳机来实现。而蓝牙耳机因为摆脱了线的束缚,日常携带会更便捷。作为一名耳机发烧友,今天来给大家分享几款公认最…

[附源码]Python计算机毕业设计SSM基于大数据的超市进销存预警系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

7 种模型加权集成方法

# 7 种模型加权集成方法 不同任务 -> 不同加权方法 分类 类别投票概率值加权 回归 预测值加权 排序 排序次序加权 目标检测 预测结果NMS 语义分割 像素类别投票加权 集成学习 考虑 模型的多样性 多样性不足 -> 最终预测结果和单个模型类似。 模型的精度差异…

基于MATLAB开发AUTOSAR软件应用层模块-part12.AUTOSAR Dictionary-3 AUTOSAR dictionary界面介绍

本篇我们讲解下AUTOSAR工具箱的Dictionary界面,以及如何使用Dictionary编辑AUTOSAR的元素。 初识界面 打开AUTOSAR Dictionary方式见下图, 点击这个按钮,打开界面, 上图就是AUTOSAR Dictionary的便捷界面 1)AtomicComponnet,是SWC软件组件,一个模型就对应一个

作业-12.12【写注释,QT项目和对象对象树模型】

将QT项目中每个文件的每行代码自行注释一遍 #项目过程管理文件 QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets #所需的类库,超过4版本要加widgets CONFIG c11 #支持c11 # The following define makes your compiler emit warnings if you use…

MySQL 自定义函数一文读懂

MySQL函数 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1、提高代码的重用性 2、简化操作 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。 存储过程与函数区别: 存储过程:可以有0个返…

内部群炸锅了,同事又删库了

事件起因 我们的系统中有数据导入的功能,可以把特定的格式的excel数据导入到系统中来 由于客户电脑的文件比较多,很多文件的名字也比较相近,客户在导入excel时选错了文件 这个错误的excel文件的格式恰好能被系统解析,客户也没及…

【专栏】实践篇08| All in docker!动手搭建Redis集群

关注公众号:【离心计划】,一起逃离舒适圈 Redis专栏合集 【专栏】01| Redis夜的第一章 【专栏】基础篇02| Redis 旁路缓存的价值 【专栏】基础篇03| Redis 花样的数据结构 【专栏】基础篇04| Redis 该怎么保证数据不丢失(上&#xff09…

(附源码)Spring Boot的网上作业管理系统 毕业设计 612317

基于Spring Boot的网上作业管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现…

【正点原子FPGA连载】第三十三章OV5640摄像头HDMI显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第三十三章OV564…

02-Neo4j-CQL

02-Neo4j-CQL: 1、CQL简介 CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。 Neo4j CQL 它是Neo4j图形数据库的查询语言。它是一种声明性模式匹配语言它遵循SQL语法。它的语法是非常简单且人性化、可读的格式。 …

具有成本效益的深度信任网络的智能LEACH的多级动态优化(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 能量利用率是能量受限无线传感器网络(WSN)的关键属性,它直接影响网络的寿命。LEACH&#x…