小程序订阅消息

前言

        由于最近需要做一个小程序发送订阅消息的功能,但是前端暂时过年回去了,所以自己有空就折腾了一下,在此记录一下,不过前端并不懂,都是百度的,主要还是研究后端的东西

订阅消息

小程序订阅消息文档:小程序订阅消息 | 微信开放文档

小程序一次性消息文档-对接的:小程序订阅消息(用户通过弹窗订阅)开发指南 | 微信开放文档

申请及配置小程序

开始 | 微信开放文档 -- 参考文档,其实也挺简单的,根据文档申请下载工具即可.

登录功能

        由于发送订阅消息需要用openid,而要拿到openid就需要用户进行登录,直接在上面生成的模板找到两个文件放入以下的代码即可

/pages/index/indes.ts 文件,其中https://xxx.com/wx/auth/login为你后台交互的地址,这部分不在此篇文章内,请自行百度

 onLaunch() {
        // 在小程序启动时调用 wx.login
        console.log('按钮被点击了');
    wx.login({
        success: res => {
          if (res.code) {
            // 发送 res.code 到后台服务器进行登录
            console.log('登录成功', res.code);

            wx.request({
                url: 'https://xxx.com/wx/auth/login',
                method: 'POST',
                data: {
                  code: res.code,
                  otherNumber: "248"
                }
              })

          } else {

            console.log('登录失败!' + res.errMsg);
          }
        },
        fail: err => {
          console.log('登录失败', err);
        }
      });
    }

/pages/index/indes.wxml 文件,其实就是调用了上面的方法

 <view class="nickname-wrappe
<think> 我们已经有了关于微信小程序订阅消息的详细开发指南,用户现在想了解使用方法、开发指南及注意事项。根据引用内容,我们可以整合如下: ### 使用方法 1. **配置消息模板**:在微信小程序后台的“订阅消息”中选择公共模板或申请自定义模板,获取模板ID(templateId)[^1]。 2. **前端订阅请求**:使用`wx.requestSubscribeMessage`API触发用户授权弹窗,传入需要订阅的模板ID数组。用户同意后,开发者可在7天内发送一条消息[^1][^3]。 ```javascript wx.requestSubscribeMessage({ tmplIds: ['模板ID1', '模板ID2'], // 最多3个 success(res) { // res格式:{'模板ID1': 'accept', '模板ID2': 'reject'} } }) ``` 3. **服务端发送消息**:通过HTTPS请求调用微信接口,需携带服务端access_token、用户openid、模板ID及填充内容[^1]。 ```python # Python示例 import requests payload = { "touser": "OPENID", "template_id": "模板ID", "page": "页面路径", "data": { "参数1": {"value": "值1"}, "参数2": {"value": "值2"} } } requests.post(f"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=TOKEN", json=payload) ``` ### 开发指南 - **模板参数填充规则**: - 参数值不能包含引号、尖括号等特殊字符 - 金额类参数需为纯数字(如`"100"`而非`"¥100"`) - **设备订阅消息**:适用于智能硬件场景,使用`wx.requestSubscribeDeviceMessage`,绑定设备后可长期发送[^3]。 ```javascript wx.requestSubscribeDeviceMessage({ tmplIds: ['设备消息模板ID'] }) ``` ### 注意事项 1. **授权限制**: - 单次调用最多3个模板ID - 用户拒绝后需引导至小程序设置页手动开启 2. **发送限制**: - 普通订阅消息:每条授权仅可发送1次 - 设备订阅消息:长期有效(用户不退订) 3. **内容规范**: - 禁止诱导订阅、营销信息 - 参数值严格匹配模板定义的数据类型(如时间格式`yyyy-MM-dd`) ### 最佳实践 - **提升授权率**:在支付成功页等关键节点触发订阅,并前置说明消息价值[^1]。 - **错误处理**: - 发送失败时记录日志并重试(建议指数退避策略) - 监控用户订阅状态变化 --- §§相关问题§§ 1. 如何实现订阅消息的定时发送? 2. 用户退订后如何重新引导订阅? 3. 设备订阅消息如何关联硬件设备ID? 4. 服务端发送失败时如何重发消息? </think> ### 微信小程序订阅消息开发指南 #### 一、核心使用方法 1. **配置消息模板** - 在[小程序后台](https://mp.weixin.qq.com/)选择模板或自定义模板,获取唯一标识符 - 模板ID格式:`XXXXXX-XXXX`(如:`A1b2c3d4e5f6g7`) 2. **前端订阅授权** 使用`wx.requestSubscribeMessage`触发用户授权弹窗[^1][^3]: ```javascript wx.requestSubscribeMessage({ tmplIds: ['模板ID1', '模板ID2'], // 最多3个模板 success(res) { // 返回值示例:{ '模板ID1': 'accept', '模板ID2': 'reject' } if (res['模板ID1'] === 'accept') { console.log('用户接受模板1订阅'); } }, fail(err) { console.error('授权失败', err.errMsg); } }); ``` 3. **服务端消息发送** 通过HTTPS调用微信接口(需服务端access_token): ```python # Python示例 import requests url = f"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={ACCESS_TOKEN}" payload = { "touser": "用户OPENID", "template_id": "模板ID", "page": "pages/index/index", // 消息跳转页 "data": { // 模板参数填充 "thing1": {"value": "商品名称"}, "number2": {"value": "100"}, "time3": {"value": "2023-08-20 10:00"} } } response = requests.post(url, json=payload) ``` #### 二、开发指南要点 1. **模板参数规范** | 参数类型 | 示例值 | 非法示例 | |----------|-------------|--------------| | 数字 | `"value": "100"` | `"¥100元"` ❌ | | 时间 | `"2023-08-20"` | `"8月20日"` ❌ | | 文本 | 长度≤20字符 | 含特殊符号❌ | 2. **设备消息订阅**(智能硬件场景)[^3] ```javascript wx.requestSubscribeDeviceMessage({ tmplIds: ['设备模板ID'], success(res) { console.log('设备消息订阅结果', res) } }) ``` 3. **发送频率限制** - 普通订阅消息:每授权仅可发送**1条** - 设备订阅消息:长期有效(用户不退订) - 单用户单模板日上限:**3条** #### 三、关键注意事项 1. **授权策略** - 用户拒绝后需引导至设置页开启:`右上角··· → 设置 → 订阅消息` - 单次调用最多申请3个模板(超量会导致弹窗失败) 2. **内容安全规范** - 禁止诱导订阅(如“订阅领红包”) - 禁止发送营销信息(促销/广告) - 参数值需严格匹配模板定义的数据类型[^1] 3. **有效期规则** $$ \text{发送窗口} = \begin{cases} \text{用户接受后7天内} & \text{(普通订阅)} \\ \text{设备绑定期间持续有效} & \text{(设备订阅)} \end{cases} $$ #### 四、最佳实践建议 1. **提升授权率** - 在支付完成页等关键节点触发订阅 - 前置说明文案示例: > “订阅后及时接收订单发货通知” 2. **错误处理机制** ```python # 消息发送重试逻辑 retry_count = 0 while retry_count < 3: response = requests.post(url, json=payload) if response.json().get('errcode') == 0: break # 发送成功 elif response.json().get('errcode') == 43101: # 用户拒收 log_error("用户已退订") break else: time.sleep(2 ** retry_count) # 指数退避 retry_count += 1 ``` > ⚠️ 违规后果:诱导订阅或发送营销内容将导致**模板封禁**,严重者暂停消息能力[^1] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值