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

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

目录

步骤一:获取模板 ID

在微信公众平台(https://mp.weixin.qq.com)手动配置获取模板 ID

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

2.1、获取消息下发权限

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

示例代码

js 复制代码
const res = await wx.requestSubscribeMessage({
  tmplIds: ['']
})

console.log(res)

这里需要注意一个坑,如果用户未授权,需要引导用户打开设置手动设置

js 复制代码
handleRequestSubscribeMessage(e) {
    let templeteId = 'zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE'

    // 先检查授权情况,如未授权需要提醒用户手动设置权限
    wx.getSetting({
      withSubscriptions: true,
      success(res) {
        console.log(res.subscriptionsSetting);
        // res.subscriptionsSetting = {
        //   mainSwitch: true, // 订阅消息总开关
        //   itemSettings: {   // 每一项开关
        //     SYS_MSG_TYPE_INTERACTIVE: 'accept', // 小游戏系统订阅消息
        //     SYS_MSG_TYPE_RANK: 'accept'
        //     zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject', // 普通一次性订阅消息
        //     ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban',
        //   }
        // }

        // 模板授权
        if ("accept" == res.subscriptionsSetting.itemSettings[templeteId]) {
          // 用户已授权
        } else {
          wx.showModal({
            title: "授权提示",
            content: "请允许接收小程序消息",
            success: function (res) {
              if (res.confirm) {
                console.log("用户点击确定");

                wx.openSetting({
                  withSubscriptions: true, // 是否同时获取用户订阅消息的订阅状态,默认不获取
                  success(res) {
                    console.log(res.authSetting);
                    // res.authSetting = {
                    //   "scope.userInfo": true,
                    //   "scope.userLocation": true
                    // }
                  },
                });
              } else if (res.cancel) {
                console.log("用户点击取消");
              }
            },
          });
        }
      },
    });

    // 请求用户授权
    wx.requestSubscribeMessage({
      tmplIds: [templeteId],
      success(res) {
        console.log(res);
        // 授权成功
      },
    });
}

2.2、获取登录凭证(code)

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

js 复制代码
const loginRes = await wx.login()

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

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

3.1、获取OPENID

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

文档:小程序登录

请求数据示例

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

返回数据示例

json 复制代码
{
	"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 

返回数据示例

json 复制代码
{
  "access_token":"ACCESS_TOKEN",
  "expires_in":7200
} 

3.3、下发订阅消息

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

请求数据示例

json 复制代码
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号"
      }
  }
} 

返回数据

json 复制代码
{
	"errcode":0,
	"errmsg":"ok"
} 
相关推荐
万岳科技系统开发3 小时前
外卖配送系统开发中的核心模块拆解与技术选型思路
小程序·开源
低代码布道师11 小时前
教培管家第11讲:班级管理——教务系统的“集成枢纽”
低代码·小程序·云开发
数字游民952712 小时前
小程序上新,猜对了么更新110组素材
人工智能·ai·小程序·ai绘画·自媒体·数字游民9527
小小王app小程序开发15 小时前
盲盒随机赏小程序核心玩法拆解与运营逻辑分析
大数据·小程序
说私域15 小时前
AI智能名片链动2+1模式小程序在消费者商家全链路互动中的应用研究
大数据·人工智能·小程序·流量运营·私域运营
不爱学习小趴菜15 小时前
uniapp微信小程序无法屏蔽右上角胶囊按钮(...)问题解决方案
微信小程序·小程序·uni-app
StarChainTech16 小时前
打造火爆的线上推币机APP:一站式合规娱乐解决方案
大数据·人工智能·物联网·小程序·娱乐·软件需求·共享经济
plmm烟酒僧16 小时前
《微信小程序demo开发》第一部分-编写页面逻辑
javascript·微信小程序·小程序·html·微信开发者工具·小程序开发
2501_9160088916 小时前
iOS 开发助手工具,设备信息查看、运行日志、文件管理等方面
android·ios·小程序·https·uni-app·iphone·webview
Stara051117 小时前
微信小程序配置与导航深度指南—全局/页面配置解析与高效传参策略V1.2
javascript·微信小程序·html·模块化开发·页面导航·wxs脚本·小程序api