查是否关注
实时查询用户是否关注公众号。对外用 unionid 直传——不走 Rekit 登录、小程序登录都能用。
前置:unionid 互通要求
你的小程序/网站应用须与平台公众号绑定在同一微信开放平台账号下,同一用户在各应用里才会拿到同一 unionid。没绑齐 → unionid 拿不到或对不上,查关注/通知对该用户永久不可用,且报错与「未关注」不可区分(只能靠平台后台告警发现)。小程序/网站应用侧由你自己绑(开放平台「管理中心」),平台公众号侧由运营绑。
unionid 从哪来
| 接入形态 | 怎么拿 unionid |
|---|---|
| 小程序自有登录(主画像) | 小程序 wx.login() → 你的服务端 jscode2session → 响应直接含 unionid(前提:小程序已绑开放平台) |
| 网站自有微信登录 | 网站应用 OAuth(snsapi_login)→ access_token + openid → sns/userinfo 响应含 unionid |
| 全托管 Rekit 登录 | 登录后 GET /api/v1/me(或 auth/exchange 响应)的 user.unionid,平台已替你落库 |
关注是投递前提
- 模板消息只能发给已关注该站点绑定服务号的用户——向运营要公众号名称/二维码(平台不托管关注页)。
- 用户关注后平台回调自动落库 unionid→openid,随后
subscribe-status即可查到(通常秒级)。 subscribed !== true时在通知设置/订单页展示该服务号的关注入口(公众号资料卡/二维码);用户已关注却始终查不到 → 几乎必然是公众号未绑开放平台,联系运营核查绑定。
身份统一用 unionid
公众号通知是独立能力,与登录/支付解耦,可单独接入。接入产品的用户往往是小程序登录、从不走 Rekit 登录,手里只有共享 unionid(公众号 openid 只有公众号自己拿得到,你拿不到)。所以对外只传
unionid,平台内部再映射到投递 openid。GET
/api/v1/notify/subscribe-statusX-Api-Key · wechat_notify实时查是否关注公众号
传 unionid。
text
GET /api/v1/notify/subscribe-status?unionid=oUnionYYYY响应
{
"ok": true,
"openid": "oMp...",
"subscribed": true,
"nickname": "昵称或null",
"unionid": "oUnion...或null"
}unionid 未知 = 未关注
平台用
members 表把 unionid → 公众号 openid,前提是该用户曾关注过共享服务号(关注事件已落库)。若该 unionid 从未关注过、平台没有记录,接口直接返回 { "subscribed": false }(不再报错),你据此判断即可。建议:subscribed !== true 时不要发模板消息(发也发不出去)。