微信小程序 订阅消息功能

步骤一 获取模板id

微信公共平台 订阅消息

可以选择添加公共模板 (只能用一次)

图片偷来的
步骤二 获取下发权限

下发权限的获取十分简单,只需要在小程序端调用requestSubscribeMessage API即可

在这里插入图片描述
使用方法:

wx.requestSubscribeMessage({
  tmplIds: [''],
  success (res) { }
})

这个时候我们可以看到调用时,屏幕下部弹出一个消息框:
在这里插入图片描述
步骤三:调用接口下发订阅消息

(1)下发消息的核心在于发送POST请求:subscribeMessage.send,通过此条请求我们将获得下发能力:

  • subscribeMessage.send支持https调用和云调用
  • 请求地址: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号"
      }
  }
}

(2)请求并不复杂,重要的是参数的获取,发送请求我们至少需要这些参数:

在这里插入图片描述

例如,模板的内容为

姓名: {{name01.DATA}}
金额: {{amount01.DATA}}
行程: {{thing01.DATA}}
日期: {{date01.DATA}}

则对应的json为

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "data": {
      "name01": {
          "value": "某某"
      },
      "amount01": {
          "value": "¥100"
      },
      "thing01": {
          "value": "广州至北京"
      } ,
      "date01": {
          "value": "2018-01-01"
      }
  }
}

  • 用这样的参数规则我们将前端的参数传入后台:
 //发送订阅消息
  message: function () {
    var that = this;
    //订阅消息模板id
    var template_id ="fqgotens_HRal3Ygiy7_WafYLsvDyMxvnNv9P8uJ_Ro";
    wx.requestSubscribeMessage({
      tmplIds: ['fqgotens_HRal3Ygiy7_WafYLsvDyMxvnNv9P8uJ_Ro'],
      success(res) {
      //发送access_token请求
        wx.request({
          url: 'https://littlede.applinzi.com/message.php',
          data:{
            access_token: that.data.accessToken,
            //数据包
            data:{
            //openid
              "touser": that.data.openid,
            //模板id
              "template_id": template_id,
              "page": "index",
              "miniprogram_state": "developer",
              "lang": "zh_CN",
              "data": {
                "date1": {
                  "value": "2020年02月18日"
                },
                "phrase2": {
                  "value": "岳阳市"
                },
                "phrase3": {
                  "value": "晴"
                },
                "character_string4": {
                  "value": "15℃"
                }
              }
            }
          },
          success: function(res) {
            console.log("订阅成功");
            console.log(res);
          },
          fail: function(res) {
            console.log("订阅失败");
          },
        })
      }
    })
  },

  • 服务器端代码:获取参数 发送post请求
<?php
	//获取参数
	$access_token=$_GET["access_token"];
	$data=$_GET["data"];
	//拼接subscribeMessage.send的URL
	$api="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={$access_token}";
    //php post请求网络的方法
   function http_request($url,$data = null,$headers=array())
    {
        $curl = curl_init();
        if( count($headers) >= 1 ){
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        }
        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
	$str=http_request($api,$data);
	echo $str;
?>

最后我们调用函数,获取用户openid,获取access_token,获取模板id,发送subscribeMessage.send`post请求,可以看到用户成功接收到订阅消息:
在这里插入图片描述

### 微信小程序订阅消息功能实现 #### 准备工作 为了在微信小程序中成功集成订阅消息功能,开发者需先完成一些准备工作。这包括但不限于获取必要的API权限以及配置服务器端环境来处理来自微信的消息推送请求[^1]。 #### 时间戳参数 `time3` 的作用 当涉及到具体的时间管理或验证时,某些接口可能会要求传入时间戳作为参数之一,比如名为 `time3` 的字段可能用于表示特定操作发生的具体时刻或者是用来做签名的有效期校验。然而,在官方文档或其他常见资料里并没有直接提到 “time3”,因此推测该名称可能是项目内部定义或是误记;通常情况下会使用 `timestamp` 或者类似的命名方式来指代这一概念[^2]。 #### 后端逻辑构建 (Java 版本为例) 对于希望不依赖于微信云开发而自行搭建服务端的情况,可以采用 Java 编程语言配合 Spring Boot 框架快速建立一套支持订阅消息的服务体系。主要流程涉及接收前端发起的模板 ID 请求、调用微信 API 获取 access_token 并据此发送携带有效载荷的数据包至指定用户的微信号上。 ```java // 假设这是简化后的代码片段展示如何利用 WeChat SDK 发送订阅消息 public void sendSubscribeMessage(String openId, String templateId){ // 构建消息体... WxMpService wxService = new WxMpServiceImpl(); try { boolean result = wxService.getMsgService().sendTemplateMsg(message); System.out.println("Send status:" +result ); } catch (WxErrorException e) { log.error(e.getError().getErrorMsg()); } } ``` #### 关联微信公众账号以延长消息有效期 值得注意的是,由于普通类目的微信小程序并不具备无限次发送订阅消息的能力,仅限于少数特殊领域如教育、交通等可享受此特权。如果业务需求确实存在这方面的要求,则考虑将小程序与同一个主体下的公众号进行关联绑定,并通过后者间接达到持续触达用户的目的[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值