微信公众号发送提醒消息

236 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情

公众号端配置

1.模板消息需要提前申请,入口在添加功能插件中,通过审批之后在功能-模板消息。需要注意的是行业决定了模板可以选择的范围,行业可以改但是需要时间。

2.进入微信公众平台在设置菜单中找到公众号设置,进入后设置网页授权对应的域名

获取公众号openid过程

注意: *.2,3步为网页之间的跳转,需要先走微信认证服务器由微信服务器返回至网页,且不能携带参数,网页端通过参数中有没有code来判断是否完成了认证请求。 *.第4步中解密code携带的用户信息需要再服务端完成,需要访问微信服务器,携带的参数有公众号appid,开发者密码,在“微信公众平台-开发-基本配置”中获取。

具体授权,解密链接地址及参数请参考官方文档

发送公众号模板消息

  1. 通过开发者密码和公众号appid获取token,可把token缓存起来避免频繁访问
  2. 按照模板参数发送请求。

这一环没啥可说的可参考官方文档中“发送模板消息”这一块

碰到的问题

授权页面不能带端口,但是实际项目在有端口的项目上

在80端口工程下增加一个跳转页面跳转至其它端口下,页面代码如下

<script type="text/javascript" >
    var url = '……';
    <!--这里就将页面重定向到新页面,同时带入原有参数-->
    var search = window.location.search;
    if (search){
        if (url.indexOf("?") != -1){
            url += "&";
        }else{
            url += "?";
        }
        url += search.substr(1) + window.location.hash;
    }
    window.location.href= url;
</script>

原生js代码关闭公众号打开的网页无效

调用微信api的方法WeixinJSBridge.call('closeWindow');

其它补充

如微信公众号与微信小程序共同绑定一个微信开放平台那么可以从code中解密出一个unionid 公众号和小程序的openid是独立的但是unionid是一样的。通过unionid可以省去公众号绑定系统账号这一环。

参考资料

developers.weixin.qq.com/doc/offiacc… blog.csdn.net/Rafireman/a…