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

  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. 使用 try-catch

    ECMA-262 第 3 版引入了 try-catch 语旬,当 try-catch 语句中发生错误时, 浏览器会认为错误已经被处理了 ,因而不会报告错误.对于那些不要求用户懂技术,也不需要用户理解错 ...

  2. [转]浮点运算decimal.js

    开发过程中免不了有浮点运算,JavaScript浮点运算的精度问题会带来一些困扰 JavaScript 只有一种数字类型 ( Number ) JavaScript采用 IEEE 754 标准双精度浮 ...

  3. HW防守 | Linux应急响应基础

    最近也是拿到了启明星辰的暑期实习offer,虽然投的是安服,但主要工作是护网,昨天在公众号Timeline Sec上看到有一篇关于护网的文章,所以在这里照着人家写的在总结一下,为将来的工作打点基础. ...

  4. vue3知识点的自我总结

    1. 我们对ref的错误理解 ref 经常去监听基本数据类型. 同时也可以去监听[数组][对象]都是可以的. ref是深度的监听.并不是大家说的那样不能去监听复杂的数据类型. 只是根据我们推荐ref去 ...

  5. 在pyqt5中展示pyecharts生成的图像

    技术背景 虽然现在很少有人用python去做一些图形化的界面,但是不得不说我们在日常大部分的软件使用中都还是有可视化与交互这样的需求的.因此pyqt5作为一个主流的python的GUI框架地位是非常重 ...

  6. windows+goland+gometalinter进行本地代码检查(高圈复杂度、重复代码等)

    1.下载gometalinter release地址为:https://github.com/alecthomas/gometalinter/releases/tag/v3.0.0 下载windows ...

  7. 【记录一个问题】cv::cuda::dft()比cv::dft()慢很多

    具体的profile调用图如下: 可以看见compute很快,但是构造函数很慢. nvidia官网看到几篇类似的帖子,但是没有讲明白怎么解决的: opencv上的参考文档:https://docs.o ...

  8. WebGPU图形编程(4):构建一个彩色的正方形<学习引自徐博士教程>

    本节我们来复原一个彩色的正方形,前提告知,本节的shaders和main的代码从结构上有调整,我会更加详细的描述每行的代码意思: 源代码下载地址:https://github.com/jack1232 ...

  9. vue学习13-自定义组件

    1 <!DOCTYPE html> 2 <html lang='en'> 3 <head> 4 <meta charset='UTF-8'> 5 < ...

  10. Tomcat-IDEA整合Tomcat服务器

    Tomcat(IDEA整合Tomcat服务器) 可以加多个版本tomcat