微信公众号订阅通知

传送门:https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/intro.html

准备工作

订阅通知 和一次性订阅通知

订阅通知支持一次性订阅和长期订阅,但可能随时下架。

一次性订阅通知,每次都需要用户扫码或者点击统一订阅才能发送通知。

订阅通知 和一次性订阅通知 模板并不能通用

订阅通知请参考这个文档:https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/intro.html

一次性订阅消息是另一个功能:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/One-time_subscription_info.html

订阅通知

订阅通知是一个用户主动订阅、服务号按需下发的通知能力。

  • 设置订阅功能:服务号可以在图文消息、网页等场景设置订阅功能。
  • 下发条件:用户在前述场景主动订阅后,服务号可通过接口向用户发送订阅通知,如信用卡动账提醒、物流到货通知等。
  • 下发位置:对已关注服务号的用户,通知下发到号内,未关注的下发到服务通知。
  • 跳转能力:可以跳转到公众号图文消息、网页和小程序。
  • 通知类型:分为一次性订阅和长期订阅——
    • 一次性订阅,指用户订阅一次,服务号可不限时间地下发一条对应的订阅通知;
    • 长期订阅,指用户订阅一次,服务号可长期多次下发通知,长期订阅通知仅向政务民生、医疗等公共服务领域开放。
步骤一:开通服务号订阅通知
步骤二:申请合适的行业类目
步骤三:在模板库选用模板
步骤四:可以在图文消息、网页设置订阅通知组件

一次性订阅通知

说明:服务号订阅通知功能(见左侧目录“订阅通知”)开启灰度测试,公众号一次性订阅消息能力可正常使用

开发者可以通过一次性订阅消息授权让微信用户授权第三方移动应用(接入说明)或公众号,获得发送一次订阅消息给到授权微信用户的机会。授权微信用户可以不需要关注公众号。微信用户每授权一次,开发者可获得一次下发消息的权限。(注意:同一用户在同一 scene 场景值下的多次授权不累积下发权限,只能下发一条。若要订阅多条,需要不同 scene 场景值)

消息下发位置说明:对于已关注公众号的,消息将下发到公众号会话里;未关注公众号的,将下发到服务通知。

公众号或网页使用一次性订阅消息流程如下:

第一步:需要用户同意授权,获取一次给用户推送一条订阅模板消息的机会

在确保微信公众帐号拥有订阅消息授权的权限的前提下(已认证的公众号即有权限,可登录公众平台在接口权限列表处查看),引导用户在微信客户端打开如下链接:

https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=wxaba38c7f163da69b&scene=1000&template_id=1uDxHNXwYQfBmXOfPJcjAS3FynHArD8aWMEFNRGSbCc&redirect_url=http%3a%2f%2fsupport.qq.com&reserved=test#wechat_redirect

参数说明

参数是否必须说明
action直接填get_confirm即可
appid公众号的唯一标识
scene重定向后会带上 scene 参数,开发者可以填0-10000的整型值,用来标识订阅场景值
template_id订阅消息模板ID,登录公众平台后台,在接口权限列表处可查看订阅模板ID
redirect_url授权后重定向的回调地址,请使用 UrlEncode 对链接进行处理。 注:要求redirect_url的域名要跟登记的业务域名一致,且业务域名不能带路径。 业务域名需登录公众号,在设置 - 公众号设置 - 功能设置里面对业务域名设置。
reserved用于保持请求和回调的状态,授权请后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验,开发者可以填写a-zA-Z0-9的参数值,最多128字节,要求做urlencode
#wechat_redirect无论直接打开还是做页面302重定向时,必须带此参数

用户同意或取消授权后会返回相关信息

如果用户点击同意或取消授权,页面将跳转至:

redirect_url/?openid=OPENID&template_id=TEMPLATE_ID&action=ACTION&scene=SCENE

参数说明

参数说明
openid用户唯一标识,只在用户确认授权时才会带上
template_id订阅消息模板ID
action用户点击动作,"confirm"代表用户确认授权,"cancel"代表用户取消授权
scene订阅场景值
reserved请求带入原样返回

第二步:通过 API 推送订阅模板消息给到授权微信用户

接口请求说明

http请求方式: post

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

post数据示例

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "url": "URL",
  "miniprogram": {
    "appid": "xiaochengxuappid12345",
    "pagepath": "index?foo=bar"
  },
  "scene": "SCENE",
  "title": "TITLE",
  "data": {
    "content": {
      "value": "VALUE",
      "color": "COLOR"
    }
  }
}

参数说明

参数是否必须说明
touser填接收消息的用户openid
template_id订阅消息模板ID
url点击消息跳转的链接,需要有 ICP 备案
miniprogram跳小程序所需数据,不需跳小程序可不用传该数据
appid所需跳转到的小程序appid(该小程序 appid 必须与发模板消息的公众号是绑定关联关系,并且小程序要求是已发布的)
pagepath所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar)
scene订阅场景值
title消息标题,15字以内
data消息正文,value为消息内容文本(200字以内),没有固定格式,可用\n换行,color为整段消息内容的字体颜色(目前仅支持整段消息为一种颜色)

注:url和 miniprogram 都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

返回说明

在调用接口后,会返回 JSON 数据包。正常时的返回 JSON 数据包示例:

{
"errcode":0,
"errmsg":"ok"
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐