接入文档 V0.1.0

提醒推送

定位:用户触发后的服务通知。预约确认、开场提醒、退款结果、危机跟进能发; 促销、群发、与用户本次服务无关的内容不能发(微信会限流甚至封接口)。

通道与降级

通道前提接口限制
服务号模板消息 template用户已关注该服务号message/template/send 只能用「我的模板」里的模板;内容必须与服务节点相关
公众号订阅通知 subscribe用户点过授权、攒了额度message/subscribe/bizsend 一次授权=一条额度;长期订阅仅政务/医疗等少数类目开放
小程序订阅消息 mp_subscribe用户在小程序里授权message/subscribe/send 同样一次一条;字段名是 thing1/date2 这种带类型的键
短信 / 站内—由业务站点自己负责 中台不做短信:各机构短信账号资质与签名不同,且腾讯云签名必须与营业执照主体一致

顺序由设置项 msg_channel_pref 决定(默认 template → subscribe)。全部不可用时消息记 skipped 并把每一档的跳过原因拼全 —— 这不是错误,是"触达不到",站点应当把它当作降级到短信/站内的信号。

发送 POST /api/v1/message/send

{ "event_key": "booking_remind",
  "openid": "oXXXX…",                    // 或 "unionid": "uXXXX…"
  "params": { "first": "您有一场咨询即将开始",
              "keyword1": "10月18日 14:00", "keyword2": "朱老师",
              "keyword3": "面询 · 60 分钟", "remark": "如需改期请提前 24 小时" },
  "url": "https://vip.onzx.cn/me/appt/3391",
  "miniprogram_appid": "",               // 填了则以小程序卡片形式跳转
  "page": "",
  "send_now": "0"                        // 1 = 同步发送并立即返回结果
}
{ "ok": true, "data": { "job_id": 812, "channel": "template", "status": "queued", "mode": "queued" } }
参数名建议固定用 first / keyword1…keyword4 / remark 这套超集: 微信只渲染模板里存在的字段,所以机构在 mp 后台换了模板通常不用改代码。 名字对不上时在后台「消息模板 → 字段对应」里映射一次即可。

查结果 POST /api/v1/message/status

{ "job_ids": [812, 813] }
→ { "jobs": [ { "id":812, "status":"sent", "wechat_msgid":"…" },
              { "id":813, "status":"skipped", "skip_reason":"template:用户未关注该服务号" } ] }

订阅额度怎么攒

方式 1:中台引导页(省域名名额,推荐)

POST https://wx.onzx.cn/api/v1/message/grant-link
{ "event_key": "booking_remind", "return": "/me?sub=1" }
→ { "url": "wx.onzx.cn/subscribe/3f1c…", "template_ids": ["…"] }

# 站点在预约成功页 / 支付成功页把这个链接露出来,用户点进去再点「允许」

引导页跑在中台域名上,「JS 接口安全域名」因此只占用中台这 1 条名额。 页面文案已明确写"会收到什么、不会收到广告",符合微信对诱导订阅的限制。

方式 2:站点自己弹窗后回报额度

POST https://wx.onzx.cn/api/v1/message/grant
{ "openid": "oXXXX…", "template_id": "…", "times": 1 }

额度是"用户同意次数",不与具体内容绑定;后台会记录 剩余/已用, 微信用户 与 消息模板 页都能看到。

频控与合规红线

错误码速查

errcode含义与处理
43004 / 40003openid 不合法或不是本账号粉丝 → 引导关注,或降级到短信/站内
43101用户未订阅或额度用完 → 用引导页攒额度
45009账号日配额耗尽 → 等退避,别硬打
40036 / 40018模板 ID / 详情不合法 → 后台从「我的模板」重新生成映射
40164中台出口 IP 不在白名单 → 开发者平台加 IP

本页内容随代码一起版本化(V0.1.0)。发现文档与实际行为不一致,请当缺陷报告。