zoukankan      html  css  js  c++  java
  • 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 是内官网只允许内部页面,只能单独新建页面,然后内嵌别的页面了

  • 相关阅读:
    hdu 6702 ^&^ 位运算
    hdu 6709 Fishing Master 贪心
    hdu 6704 K-th occurrence 二分 ST表 后缀数组 主席树
    hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列 LCIS
    hdu 5909 Tree Cutting FWT
    luogu P1588 丢失的牛 宽搜
    luogu P1003 铺地毯
    luogu P1104 生日
    luogu P1094 纪念品分组
    luogu P1093 奖学金
  • 原文地址:https://www.cnblogs.com/fger/p/12799613.html
Copyright © 2011-2022 走看看