这篇主要针对小程序进行演示,既然是发送消息,那么就有三个问题。发送什么内容,给谁发送,怎么发送!往下一条一条解决。

  1. 发送什么消息内容 - 通过微信公众号平台 选择对应的消息模板

    选择以后在我的模板里面就出现了。

  2. 发给谁 
    既然是发送信息,那么必须有收件人的地址,在微信生态里面,只要是通过微信登录用户都会根据不同小程序分配一个唯一的openid(每个小程序都不一样,但是在当前小程序是唯一的)。因为我的系统是使用手机号码注册的,并没有使用微信登录,那么如果要得到微信分配的openid就需要在注册时候使用微信登录一次,只是为了得到当前用户的openid。代码如下
    //前面是自己的注册逻辑
    uni.login({
      provider: 'weixin',
    success: function(res) {
    let appid = '*******' // 通过微信小程序后台 开发管理 开发设置得到
    let secret = '*******' // 同上
    let url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' +
    res.code + '&grant_type=authorization_code';
    uni.request({
    url: url, // 请求路径
    success: result => {
    console.info(result.data.openid); // 在此处得到openid 保存数据库即可 每个用户在不同的小程序下是不一样的
    },
    });
    }
    });

    做完这一步已经得到了收件人,不过微信的限制是你需要在需要发送的地方让用户许可(如果没有这个限制,怕你的小程序一直给客户发骚扰信息),这个用个实例说下,比如我的是考试系统,那么如果客户预约了某场考试,那么我就会在预约按钮上增加一个逻辑用来获取用户允许接受信息的权限(用户点击一次,你能发一次,微信后台有记录)

    //上面是考试预约逻辑
    uni.requestSubscribeMessage({
    tmplIds: ['*******'], // 你的模板id 此处是可以多个模板id的 不过我的是一个
    success(res) {
    console.log('已授权接收订阅消息')
    }
    })

    效果如下

  3. 用户点击完毕以后,等于你有了一次给当前用户发送一条当前模板的权利。如果你搞个循环让这个授权弹出5次,那么你就能给当前这个客户发送5次。

    1. 往下就是怎么发的问题了,可以通过自己的后台服务发送,当然也可以是前台,只要能访问网络都可以,这里选用的是python后台进行发送,其他的代码都差不多。还有考试的例子,他预约以后,我在后台建立个定时任务,当这个考试的前10分钟开始批量给预约过考试的用户发送。因为发送是通过腾讯服务发送的,所以需要先进行token认证。

      appid = "***"  // 微信id 获取方式和上面面一样
      secret = "***" // 同上 token_url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"
      request = urllib.request.Request(token_url)
      # get服务器请求
      token_result = urllib.request.urlopen(request).read()
      token_result=str(token_result, encoding = "utf-8")
      token_result=eval(token_result)
      print(token_result)
      serverToken = token_result.get('access_token')

      认证以后得到token,就可以发送了

          // data为模板的 内容 
          data = {
              # 用户的openId 就是前台注册的时候保存到数据库那个
              "touser": '*****',
              # 订阅消息模板id
              "template_id": "*****",  
              # 要跳转的页面 这里可以跳转到小程序的某个页面,可以带参数
              "page": "pages/index/index",
              # 模板消息对应的内容设置  每个字段类型可以根据自己的模板设置
              "data": {
                  "thing1": {
                      "value": "距开考时间仅剩10分钟,请您按时参加!"
                  },
                  "thing2": {
                      "value": "2020年国家公务员考试模拟考试"
                  },
                  "date3": {
                      "value": "2019年10月1日 15:01"
                  },
                  "thing11": {
                      "value": "一建水利"
                  }
              }
           }
            url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={serverToken}'.format(serverToken = serverToken)  
      # 数据格式化(从这里开始对上面的data进行格式化,转成符合post的json参数形式)
      data = json.dumps(data)
      # 数据格式化
      data = bytes(data, 'utf8')
      # 数据格式化
      request = urllib.request.Request(url)
      # post服务器请求
      result = urllib.request.urlopen(request, data).read()
      # 打印结果
      print(result)

      最终效果

uniapp 微信发送订阅消息的更多相关文章

  1. 微信小程序如何发送订阅消息,正确姿势来了,建议收藏!

    小程序订阅消息公测已经有些日子,今天以世界上最好的语言(PHP)为例,说一下如何发送订阅消息. 1.订阅消息 其实如果用过模板消息的话,改用订阅消息挺简单的,看一下官方文档稍加摸索就能使用. 但是对于 ...

  2. 微信小程序发送订阅消息(之前是模板消息)

    之前的模板消息已经废弃,现在改为订阅消息,订阅消息发布前,需要用户确认后才能接收订阅消息. 小程序端 index.wxml <button bindtap="send"> ...

  3. .netcore 3.1 C# 微信小程序发送订阅消息

    一.appsettings.json定义小程序配置信息 "WX": { "AppId": "wx88822730803edd44", &qu ...

  4. 使用WxPusher给自己的个人微信发送提醒消息(WxPusher微信推送服务)

    1.背景 我们很多时候,我们在服务器上运行软件,发生一些业务异常,需要给我们发送一个及时的提醒,或者是使用一些耗时软件,比如抢车票,抢课,刷优惠券当任务运行成功以后,也需要及时的发送消息给自己 ,告诉 ...

  5. 微信发送模版消息,PHP代码简单案例

    function http_request($url,$data=array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); c ...

  6. 微信小程序开发 给微信发送模板消息提示openId无效

    参数我都给好了,也是post的raw方式发送请求, openId是绝对没有问题的. 但就是一直报如下错误 {"errcode":40003,"errmsg":& ...

  7. 微信小程序的模板消息与小程序订阅消息

    小程序订阅消息 功能介绍 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验. 订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消息卡片跳 ...

  8. 微信小程序订阅消息,我踩过的坑都在这里了!

    旧的模板消息将在 2020 年 1 月 10 号全面下架,也就是今天,不过貌似现在还可以用!!!我已经改好了,只不过还没有上线,准备坚持到最后一天! 0.订阅消息 简单介绍一下订阅消息的特点: 用户授 ...

  9. 微信小程序订阅消息调研

    相关资料 背景:微信模板消息已正式下架,改为订阅消息,详情如下: 服务变更通知 订阅消息:订阅消息相关内容如下: 订阅消息 接口设计 获取接口访问凭证 :根据appId和secret获取接口访问凭证a ...

随机推荐

  1. PIKACHU之文件包含漏洞

    PIKUCHU靶场之文件包含 一.file inclusion(local) 实验源码: <?php /** * Created by runner.han * There is nothing ...

  2. vue.config.js报错cannot set property "preserveWhitespace" of undefined

    vue.config.js报错cannot set property "preserveWhitespace" of undefined 最近在项目中配置webpack,由于vue ...

  3. 【C++】类-基础知识

    类-基础知识 目录 类-基础知识 1. 语法定义 2. 类的实现 3. 三个基本的函数 3.1 构造函数 功能 形式 调用时机 默认构造函数 3.2 复制构造函数 功能 形式 调用时机 3.3 析构函 ...

  4. unity3d发布安卓出错plese set the package name

    发布时报错 参考https://forum.unity.com/threads/where-is-package-name-setting.318839/ 参考https://answers.unit ...

  5. IE8中li添加float属性,中英数字混合BUG

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 关于python 爬虫遇到的反盗链

    首先声明:目标网址是从别人案例里得到的,内容你懂的... 本来闲来无事,学习下爬虫的知识,遇到恶心的反盗链,好在目标网址防盗链简单,代码里注明了如何去查看目标网址的防盗检查: 防盗链原理 http标准 ...

  7. Nginx全面介绍 什么是Nginx?

    目录 一:Nginx全面讲解 1.简介: 2.nginx的用武之地 3.关于代理(解析含义作用) 二:正向代理 三:反向代理 四:项目应用场景 五:正向代理与反向代理区别 1.正向代理 2.反向代理 ...

  8. glibc-2.18升级

    1.下载文件下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.18.tar.gz 2.安装部署解压tar -zxvf glibc- ...

  9. 深入Windows APC

      本篇原文为 Depths of Windows APC ,如果有良好的英文基础,可以点击该链接进行阅读.本文为我个人:寂静的羽夏(wingsummer) 中文翻译,非机翻,著作权归原作者 Rbmm ...

  10. 如何使用 numpy 和 pytorch 快速计算 IOU

    前言 在目标检测中用交并比(Interection-over-unio,简称 IOU)来衡量两个边界框之间的重叠程度,下面就使用 numpy 和 pytorch 两种框架的矢量计算方式来快速计算各种情 ...