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


    小程序订阅消息公测已经有些日子,今天以世界上最好的语言(PHP)为例,说一下如何发送订阅消息。

    1、订阅消息

    其实如果用过模板消息的话,改用订阅消息挺简单的,看一下官方文档稍加摸索就能使用。

    但是对于那些第一次用的萌新来说,可能会遇到各种各样的坑,所以我会具体的说一下实现的过程,有经验的可以直接翻到文章底部查看 Demo。

    虽然如此,但是更详细的参数描述还是需要去看官方文档,传送门:

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html

    2、准备工作

    首先是要获取template_id,也就是模板 ID。

    这个在小程序后台的公共模板库找到适用的模板选用,之后到我的模板中复制系统分配的模板 ID即可。如果没找到合适的,就需要自己申请模板,3 - 7 天审核期。

    然后就是小程序的 AppId 和 AppSecret,获取方式在小程序后台的开发功能中找到开发设置,保存 ID 和秘钥。

    这里需要注意的是AppSecret只有在第一次生成的时候会显示,之后不再明文显示,这个需要开发者自己保存好,如果泄露或者忘记密匙重置即可。

    至于 openid 的获取这里就不做具体说明了。

    3、授权接收

    发送前需要接受者授权接收该类订阅消息,否则订阅消息是无法下发,代码很简单,调用官方的订阅接口:

    wx.requestSubscribeMessage({
      tmplIds: ['template_id'], // 此处可填写多个模板 ID,但低版本微信不兼容只能授权一个
      success (res) {
        console.log('已授权接收订阅消息')
      }
    })

    拉起的授权框是这样的,但是截止发文之前,开发者工具是无法调用接口,只能在真机上运行,无奈。

    4、下发订阅消息

    下发消息调用subscribeMessage.send ,分为云调用和 https 调用,云调用比较简单,免去了 access_token 的获取:

    const cloud = require('wx-server-sdk')
    cloud.init()
    exports.main = async (event, context) => {
      try {
        const result = await cloud.openapi.subscribeMessage.send({
            touser: 'OPENID',
            page: 'index',
            data: {
              name3: {
                value: '我是玖柒后'
              },
              thing4: {
                value: 'Hello World!'
              },
              phrase1: {
                value: "发送成功!"
              },
              date5: {
                value: "发送成功!"
              },
              thing2: {
                value: "1024 身体健康!"
              }
            },
            templateId: 'TEMPLATE_ID'
          })
        console.log(result)
        return result
      } catch (err) {
        console.log(err)
        return err
      }
    }
    

    然后在服务器端发起请求,请求地址:

    https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=token

    在这之前先获取小程序全局唯一后台接口调用凭据(access_token),这就用到了之前保存的 AppId 和 AppSecret。

    // 小程序 appID 和 appSecret 获取 token
    function getAccessToken($appid, $appsecret)
    {
      $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
      $html = file_get_contents($url);
      $output = json_decode($html, true);
      $access_token = $output['access_token'];
      return $access_token;
    }
    

    虽然看起来稍微有点复杂,但其实也只要向服务器发送一个请求就可以了,获取和调用都由服务器处理,收到的消息和模板消息差不多。

    PHP 订阅消息完整的 API 模板关注公众号,后台回复「订阅消息」获取。

  • 相关阅读:
    Openmp编程练习
    PAT-1107 Social Clusters (30 分) 并查集模板
    [无需建树]已知前序或后序和中序遍历结果,输出前序或后序或层次遍历的方法汇总
    微机原理与接口技术笔记(二)
    微机原理与接口技术笔记(一)
    win32API多线程编程
    PAT-1021 Deepest Root (25 分) 并查集判断成环和联通+求树的深度
    PAT-1015 Reversible Primes (20 分) 进制转换+质数
    PAT-1022 Digital Library (30 分) 字符串处理
    PAT-1013 Battle Over Cities (25 分) DFS求连通块
  • 原文地址:https://www.cnblogs.com/msunh/p/11762573.html
Copyright © 2020-2023  润新知