背景:小程序模板消息通知一次订阅一次通知,不能满足业务需求。小程序端多次订阅也会降低用户使用体验
解决:使用服务号通知代替小程序订阅通知
存在问题:小程序openid与服务号openid不同
解决方案:需要将小程序和服务号绑定微信开发平台,获取unionid,unionid是同一用户在微信平台的唯一标识。需把小程序openid,服务号openid,unionid对应关系落库,后续发消息,通过小程序直接找到服务号openid,进行模板消息推送
具体步骤:
1. 小程序在登陆时
api.weixin.qq.com/sns/jscode2…
获取unionid,落库
2. 服务号使用事件获取用户关注信息。事件需要配置服务器,并在本地校验服务器。接受事件url与校验服务器url相同,请求方式不同。
3. 用户订阅事件坑之一:controller返回不要用string,如果用了springmvc会默认更改Content-Type,导致response中的xml不能正确解析,也会让人挠头(xml中可以配置自动回复的信息,也可以做自动回复,后续有需求可加)
4. 用户事件处理逻辑,根据服务号openid查询用户详细信息api.weixin.qq.com/cgi-bin/use… 落库
5. 服务号获取token需要在服务号后台配置服务器ip白名单,不然也会挠头哦
6. 服务号历史数据,可使用 api.weixin.qq.com/cgi-bin/use… 获取全部用户openid列表,一次返回10000条,然后再用api.weixin.qq.com/cgi-bin/use… 查unionid,落库