问题背景:一个H5站点,微信内打开或普通浏览器打开。需要用户下单后,关注公众号,然后推送模板消息,您有新订单,点击查看之类的。。
遇到问题:公众号的模板消息推送,只能使用公众号的openid, 微信内打开可以进行授权登录直接拿到可用的,但是普通H5不行。通过开放平台将普通H5和公众号关联的话,能拿到公共的unionid,但是普通H5下单,就算拿到unionid也没办法推送,因为不知道公众号的openid
解决方案:
方案一、把公众号弄成开发者模式,用户关注公众号的时候,触发关注事件,可以取到openid和unionid,从而进行关联。
问题是开发者模式,需要自定义图文,菜单等等,麻烦。。。
方案二、
1. 定时任务(5分钟),调用公众号查询粉丝列表接口,能拿到openid,然后通过获取用户基本信息接口拿unionid,写入wechat_fans表。
2.微信h5访问时-》授权登录直接拿到openid-》写入订单openid字段中,订单支付完,直接调用模板消息接口推送消息了。
3.普通h5访问,开放平台授权登录,拿到unionid,写入订单unionid字段中。
4.定时任务(1分钟)处理没有openid且限制时效内的订单数据,通过unionid到wechat_fans表中去搜索openid,搜索到修改订单记录,同时进行模板消息推送。
最后:
我选择方案二,不用取动现有公众号的内容。比较遗憾的是普通H5下单后的模板消息推送延迟问题,可以通过redis, mq等做优化。