node实现小程序消息订阅

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

  • 注意以下红框部分,下面步骤要用到

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

  • 示例代码,对应上方红线的内容
//消息模板
let messages ={
    touser: '********************',//openid
    template_id: 'xxxxxxxxxxxxxxx', //订阅模板id
    data: {
        //留言标题
        thing1:{
            value: '测试标题'
        },
        //客户名称
        name2:{
            value: '章墨'
        },
        //留言内容
        thing3:{
            value: '消息推送了!记得进入小程序查看哟~'
        },
        //留言时间
        date4: {
            value: '2024-3-13'
        },
        //温馨提示
        thing5:{
            value: '此为测试版本,无需重视!'
        }
    }
}

3.获取小程序的openid

  • 获取到openid,消息模板中要用到
//获取openid
getOpenid = (code) => {
    return new Promise((resolve, reject) => {
        let appid = weixinData.Appid
        let secret = weixinData.AppSecret
        let params = {
            appid,
            secret,
            js_code:code
        }
        let formData = qs.stringify(params)
        let openIdUrl = "https://api.weixin.qq.com/sns/jscode2session?" + formData + "&grant_type=authorization_code"
        api.get(openIdUrl).then( res => {
            resolve(res.data.openid)
        })
    })
}

4.获取access_token

// 获取access_token
getAccessToken = () => {
    return new Promise((resolve) => {
        const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${weixinData.Appid}&secret=${weixinData.AppSecret}`
        api.get(url).then(function (response) {
                        // 处理成功情况
                        resolve(response.data.access_token)
                    })
                    .catch(function (error) {
                        // 处理错误情况
                        console.log(error);
                    })
    })
    
}

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

const urls = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${res}`
            const options = {
                method: 'post',
                url: urls,
                json: messages
            }
            request(options, function (err, res, body) {
                if (err) {
                    console.log(err)
                } else {
                    if (body.errcode == 0) {
                        resMax.send({
                            code: 200,
                            mes: '消息通知发送成功!',
                            success: true
                        })
                    }
                }
            })

6.小程序端添加订阅消息的按钮

let getMes = () => {
		uni.requestSubscribeMessage({
			tmplIds: ['xxxxxxxx'], //消息模板Id
			success: res => {
				console.log("发送消息通知", res)
			},
			fail: e => {
				console.log(e)
			}
		})
	}

7.最后:1.先发起一次订阅,2.然后调用node的发送消息接口进行测试

8.注意

  • 一次订阅对应一次消息推送,目前没有长期订阅的方案
  • 小程序端和node.js后端中的模板ID注意一定要一致,不然推送不了
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微信小程序实现订阅消息功能,需要在后端服务器使用Node.js实现。以下是一个示例的Node.js源码,用于实现微信小程序订阅消息功能。 ```javascript const express = require('express'); const axios = require('axios'); const app = express(); const port = 3000; // 用于接收微信小程序订阅消息的回调 app.post('/callback', async (req, res) => { try { // 解析请求体中的数据 const data = req.body; // 向微信API发送请求,完成订阅消息的下发 await axios.post('https://api.weixin.qq.com/cgi-bin/message/subscribe/send', { touser: data.openid, // 用户的openid access_token: data.access_token, // 小程序的access token template_id: data.template_id, // 订阅消息模板ID data: data.template_data, // 订阅消息模板中的数据 }); // 返回成功响应给微信小程序 res.status(200).send('Success'); } catch (error) { // 返回错误响应给微信小程序 res.status(500).send('Failed'); } }); app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ``` 上述代码中,创建了一个基于Express框架的Node.js服务器。通过定义一个`/callback`的路由,用于接收微信小程序发送的订阅消息的回调。 在回调中,首先解析请求体中的数据,包括用户的openid、小程序的access token、订阅消息模板ID以及要下发的模板数据。然后,使用axios库发送HTTP POST请求到微信API,完成订阅消息的下发。 最后,根据发送请求的结果,返回相应的成功或失败响应给微信小程序。 需要注意的是,此代码仅为示例,实际项目中还需要添加相应的错误处理等逻辑。此外,还需要配置服务器的域名与小程序进行关联,并在小程序端的代码中发送HTTP请求到该服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值