zoukankan      html  css  js  c++  java
  • 微信小程序如何发送订阅消息,正确姿势来了,建议收藏!

    小程序订阅消息公测已经有些日子,今天以世界上最好的语言(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 模板关注公众号,后台回复「订阅消息」获取。

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/msunh/p/11762573.html
Copyright © 2011-2022 走看看