原公众号文档（包含订阅号与服务号）已升级为公众号（原订阅号）与服务号文档。公众号文档请直接参考本目录内容，服务号文档请 [点击此处](/doc/service/guide/README.md) 前往。

# 一次性订阅消息

**说明：服务号订阅通知功能（见左侧目录“订阅通知”）开启灰度测试，公众号一次性订阅消息能力可正常使用**


开发者可以通过一次性订阅消息授权让微信用户授权第三方移动应用（[接入说明](/doc/oplatform/Mobile_App/One-time_subscription_info.md)）或公众号，获得发送一次订阅消息给到授权微信用户的机会。授权微信用户可以不需要关注公众号。微信用户每授权一次，开发者可获得一次下发消息的权限。（注意：同一用户在同一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推送订阅模板消息给到授权微信用户**


- 接口详情可查看[发送一次性订阅消息](/doc/subscription/api/notify/subscribe/api_templatesubscribe.md)
