微信小程序订阅消息使用

微信订阅消息使用(自己摸索的:可能有错误)

🍬先来看看订阅消息的介绍叭!

功能介绍

消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。

  • 订阅消息推送位置:服务通知
  • 订阅消息下发条件:用户自主订阅
  • 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面

消息类型

1. 一次性订阅消息

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

2. 长期订阅消息

一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。

目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

3. 设备订阅消息

设备订阅消息是一种特殊类型的订阅消息,它属于长期订阅消息类型,且需要完成「设备接入」才能使用。

设备订阅消息用于在设备触发某些需要人工介入的事件时(例如设备发生故障、设备耗材不足等),向用户发送消息通知。详见设备订阅消息文档

🍬按照官方给的步骤开始操作

步骤一:获取模板 ID

在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

步骤二:获取下发权限

一次性订阅消息、长期订阅消息,详见接口 wx.requestSubscribeMessage

设备订阅消息,详见接口 wx.requestSubscribeDeviceMessage

步骤三:调用接口下发订阅消息

一次性订阅消息、长期订阅消息,详见服务端接口 subscribeMessage.send

设备订阅消息,详见服务端接口 hardwareDevice.send

注意事项

  • 用户勾选 “总是保持以上选择,不再询问” 之后,下次订阅调用 wx.requestSubscribeMessage 不会弹窗,保持之前的选择,修改选择需要打开小程序设置进行修改

🍬来看看我的使用过程叭

1.获取模板ID

​ 就是它了(这里需要自己在微信公众平台配置订阅消息模板并查看模板ID)在这里插入图片描述

2.获取权限

具体的参数以及回调我就不在写了,开发文档里有,具体调用如下:

wx.requestSubscribeMessage({
  tmplIds: [''],
  success (res) { }
})

这里填入自己的tmplIds即可,调用成功后可以在回调函数的参数对象中查看,接口调用成功时 errMsg 值为’requestSubscribeMessage:ok’

3.调用接口发送订阅消息

所调用的接口为:subscribeMessage.send

这里我使用的是HTTPS调用方式

请求地址:POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN

请求示例:

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "miniprogram_state":"developer",
  "lang":"zh_CN",
  "data": {
      "number01": {
          "value": "339208499"
      },
      "date01": {
          "value": "2015年01月05日"
      },
      "site01": {
          "value": "TIT创意园"
      } ,
      "site02": {
          "value": "广州市新港中路397号"
      }
  }
}

请求参数:

属性类型默认值必填说明
access_token / cloudbase_access_tokenstring接口调用凭证
touserstring接收者(用户)的 openid
template_idstring所需下发的订阅模板id
pagestring点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
dataObject模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }
miniprogram_statestring跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
langstring进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN

这里有四个必填项:access_token、touser、template_id、data

access_token

调用接口:auth.getAccessToken,获取小程序全局唯一后台接口调用凭据(access_token

请求地址:GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数:

属性类型默认值必填说明
grant_typestring填写 client_credential
appidstring小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)
secretstring小程序唯一凭证密钥,即 AppSecret,获取方式同 appid

这两个参数在这呢
在这里插入图片描述

{
	"appid":AppID,
	"secret":AppSecret
}

返回数据示例

正常返回将会获得token值

错误时返回

{"errcode":40013,"errmsg":"invalid appid"}
touser

接收者(用户)的 openid

调用接口:auth.code2Session

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key

请求地址:GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

请求参数:

属性类型默认值必填说明
appidstring小程序 appId
secretstring小程序 appSecret
js_codestring登录时获取的 code
grant_typestring授权类型,此处只需填写 authorization_code
{
	"appid":AppID,
	"secret":AppSecret,
    "js_code":登录时的code,
    "grant_type":"authorization_code"
}

返回值

Object

返回的 JSON 数据包

属性类型说明
openidstring用户唯一标识
session_keystring会话密钥
unionidstring用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明
errcodenumber错误码
errmsgstring错误信息

这样就可以获得openid

template_id

第一步就已经获取过了,就直接下一个参数吧

data
"data": {
      "date1": {
          "value": "2028年06月01日"
      },
      "thing2": {
          "value": "洛阳市涧西区西苑路新友谊大酒店"
      },
      "thing3": {
          "value": "婚礼即将如期举行,请您提前做好出行计划"
      } ,
      "thing4": {
          "value": "张草原"
      } ,
      "thing5": {
          "value": "张凯、唐莹"
      }
  }

经过上述步骤,所有的参数都已经获取了,接下来就可以发送请求进行测试了

🍬使用postMan进行简单测试

1. 获取openid(填入相关参数)

https://api.weixin.qq.com/sns/jscode2session?appid=appid&secret=secret&js_code=openid&grant_type=authorization_code

在这里插入图片描述
2. 发送订阅消息

  • 请求接口
    https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=access_token

在此网站获取测试的access_token
https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E5%9F%BA%E7%A1%80%E6%94%AF%E6%8C%81&form=%E8%8E%B7%E5%8F%96access_token%E6%8E%A5%E5%8F%A3%20/token

  • 请求参数
{
  "touser": "openid",
  "template_id": "template_id",
  "data": {
      "date1": {
          "value": "2028年06月01日"
      },
      "thing2": {
          "value": "洛阳市涧西区西苑路新友谊大酒店"
      },
      "thing3": {
          "value": "婚礼即将如期举行,请您提前做好出行计划"
      } ,
      "thing4": {
          "value": "某某某"
      } ,
      "thing5": {
          "value": "张某、李某"
      }
  }
}

传入正确的参数就可以成功的发送订阅消息了
在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值