3、小程序消息推送

一、配置消息模板

 然后配置

 宝塔创建站点index.php

<?php  
//1. 将timestamp , nonce , token 按照字典排序  
$timestamp = $_GET['timestamp'];  
$nonce = $_GET['nonce'];  
$token = "你自定义的Token值";  
$signature = $_GET['signature'];  
$array = array($timestamp,$nonce,$token);  
sort($array);  
  
//2.将排序后的三个参数拼接后用sha1加密  
$tmpstr = implode('',$array);  
$tmpstr = sha1($tmpstr);  
  
//3. 将加密后的字符串与 signature 进行对比, 判断该请求是否来自微信  
if($tmpstr == $signature)  
{  
    echo $_GET['echostr'];  
    exit;  
}  

实践

 返回设置首页可看到

 官方要 取消消息模板,使用订阅消息

 点击详情可以查看模板参数

 或者自定义模板

 二、模板实现

1、调起授权

  <button bindtap="btnClick">点击调起订阅消息</button>

js如下

  btnClick() {

    wx.requestSubscribeMessage({
      tmplIds: ["IJhwUdQzDAXCAdE5cE0VkZYf05G70--FsEqKSf-swS4"], // 此处可填写多个模板 ID,但低版本微信不兼容只能授权一个
      success: (res) => { //成功回调
        console.log('已授权接收订阅消息', res)
        if (res['IJhwUdQzDAXCAdE5cE0VkZYf05G70--FsEqKSf-swS4'] == 'accept') { //accept--用户同意 
        }
      },
      fail(err) {
        console.log(err)
      }
    })

  },

实践遇到几点注意:

1、吊不起来 我加了 fail 去找原因

2、20001,No template data return, verify the template id exist", errCode: NaN}, 你开发的小程序appId和申请模版ID的appId是一样的吗?这个要确定下 必须一致,试了几次模板是没错的

 2、发送消息

 代码

  <button bindtap="btnClick2">点击发送订阅消息</button>

js如下

  btnClick2() {

    wx.request({
      url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx3a67e41d312efe09&secret=3deee1c88d2e3ae6bf584d64945ff367',
      data: {},
      success: function(res) {
        var openid = wx.getStorageSync("openid") //取前一步存起来的openid
        console.log("获取openid",openid);
        // 调用下发接口
        wx.request({
          url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + res.data.access_token, //获取的access_token
          method: "POST",
          header: {
            'content-type': 'application/json' // 默认值
          },
          data: JSON.stringify({
            touser: openid, //当前用户的openid
            template_id: "IJhwUdQzDAXCAdE5cE0VkZYf05G70--FsEqKSf-swS4", //需要下发的模板ID,如模板不多可让后台直接配置写死,多的话就通过微信获取模板列表接口查询模板
            //page: "pages/garden/garden", //点击小程序订阅消息跳转的页面,可携带参数
            data: {
              "name1": { //这个key值就是上面提到的关键词,在后台对应的模板详情里可以看到,等后台-->点订阅消息-->我的模板(没有的话先去公共模板库选一个)-->点击详情-->右边详细内容里就是对应的key了
                "value": '张三' //这个值是下发给用户的信息
              },
              "date2": {
                "value": '2020-01-08'
              },
              "thing4": {
                "value": '感冒了'
              },
              "time3": {
                "value": '19:52'
              }
            }
          }),
          success: res => {
            console.log(res)
            wx.showToast({
              title: '下发成功',
            })
            // 这里可以写自己的逻辑
          }
        })
      }
    })

  },

 这是一次性订阅,每次调起授权一次,只能发一次,除非你授权多次,才可以

 所以都会处理把wx.requestSubscribeMessage res下放入发送方法下去执行

关于page 是内官网只允许内部页面,只能单独新建页面,然后内嵌别的页面了

猜你喜欢

转载自www.cnblogs.com/fger/p/12799613.html