小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 微信小程序实现消息订阅

微信小程序实现消息订阅

类型特点适用场景
一次性订阅用户授权后仅能发送1次消息,适用于时效性强的通知订单支付成功提醒、活动报名确认
长期订阅用户授权后可多次发送消息,需特定行业资质(政务/医疗/交通等)航班动态更新、设备故障预警
设备订阅特殊长期订阅类型,需设备接入能力智能硬件耗材不足提醒


二、核心开发流程

步骤1:获取消息模板ID

登录微信公众平台

进入「订阅消息」→「选用」或「新建模板」

搜索关键词(如“支付成功通知”)选择官方模板

示例:物流通知模板可能包含字段 {{快递公司}}、{{运单号}} 

模板审核与记录

提交自定义模板需等待审核(通常1-3个工作日)

记录模板ID(如 hD-ixGOhYmUfjOnI8MCzQMPshzGVeux_2vzyvQu7O68)


步骤2:配置消息推送服务

启用消息推送接口

在「开发 → 接口设置」中配置服务器地址和Token

验证消息推送配置(通过微信调试工具发送测试请求)


事件订阅监听

// 接收用户订阅状态变更事件(XML/JSON格式)
app.on('subscribe_msg_popup_event', (msg) => {
  console.log('用户订阅状态:', msg.SubscribeStatusString);
});


步骤3:前端请求用户授权

// 调用订阅接口(支持同时请求多个模板)
wx.requestSubscribeMessage({
  tmplIds: ['模板ID1', '模板ID2'],
  success(res) {
    const acceptedIds = Object.keys(res).filter(k => res[k] === 'accept');
    console.log('用户同意的模板:', acceptedIds);
  },
  fail(err) {
    console.error('授权失败:', err.errMsg);
  }
});


步骤4:服务端发送订阅消息

HTTP请求示例(Node.js)

const axios = require('axios');
const access_token = '获取的access_token'; // 通过appid和secret换取

axios.post('https://api.weixin.qq.com/cgi-bin/message/subscribe/send', {
  touser: '用户openid',
  template_id: '模板ID',
  page: 'pages/index/index',  // 点击消息跳转页面
  data: {
    thing1: { value: '订单编号123' },  // 字段需与模板严格匹配
    time2: { value: '2025-04-06 14:30' }
  }
}, {
  params: { access_token }
});


三、进阶开发技巧

用户授权状态管理

// 检查历史授权状态
wx.getSetting({
  withSubscriptions: true,
  success(res) {
    const status = res.subscriptionsSetting['模板ID'];
    if(status === 'accept') sendMessage();
  }
});

联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了