概念步骤理解:
首先,需要拥有一个小程序,与服务号类型的公众号(我理解是,公众号分为服务号与订阅号,这里发送模板消息,需要服务号),且微信小程序与公众号都需要客户认证通过!
其次,需要客户,去登录《微信开放平台》(如没有需要申请,需要相关公司证件),将需要关联发送消息的小程序与公众号进行绑定,绑定关系可以多对多;
需要注意,
- 微信小程序与微信用户之间有一个openid(此微信小程序与此微信用户的永远不变的唯一码);
- 微信公众号与微信用户之间有一个openid(此微信公众号与此微信用户的唯一不变的唯一码);
- 如通过《微信开放平台》将此小程序与此公众号绑定之后,微信小程序与微信公众号将产生一个unionID(此微信小程序与此微信公众号的唯一不变的唯一码,疑点:重新绑定后unionID是否会改动?个人觉得很大可能会改变,这个需要注意)
- 自此,我们可以通过访问微信小程序或者访问微信公众号,拿到对应的openid与unionid,
后,与用户关联起来,这样就打通了小程序与公众号互动的渠道。
技术:
前提:
无论微信小程序或者微信公众号,接口的起源,都需要对应的appid与secret,
都可去登录《微信公众平台》的基本配置中,进行获取;
获取微信小程序与微信公众号的access_token:
上述获取到 appid与secret 之后,我们需要获取一个接口常用的参数,access_token;
微信小程序与微信公众号 获取 access_token 都是用的同一个接口;
接口调用请求说明
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
官方技术文档:
请注意,access_token 不要频繁获取,有概率会造成数据混乱与异常,access_token的有效期都是为2个小时,个人建议两个小时以内(自行斟酌具体时间)获取一遍,存与系统参数,后续需要用直接从数据库get
获取微信用户与微信小程序的openid 与 对应 unionid:
官方技术文档:
微信小程序获取openID及unionID | 微信开放社区
注意点:去《微信公众平台》登录小程序,拿到小程序的appid与对应的secret,通过小程序wx.login函数拿到user.code,这样调用接口的三个参数就齐全了,具体看官方文档;
获取微信用户与微信公众号的openid与对应unionID:
由于微信公众号无需开发,故此注意微信公众平台配置与后台接口即可;
首先需要开发者先去关注《公众平台安全助手》,然后开发者再关注客户的服务号,再然后客户操作服务号,邀请开发者成为运营者,开发者接收到邀请后,确认接受邀请后就可以通过微信去往《微信公众平台》登录服务号后台;
开发者登录服务号后台后,去 基本配置中 点击成为开发者,然后获取到公众号的appid与对应的secret;
接下来,需要配置公众号访问的后台路径(每个用户的每次关注与每次发送消息访问的后台路径),我们可以通过这个接口可以拿到我们想要的用户openid与对应unionid
在开发初期,我们可以通过花生壳,将本地域名发布成https,然后将接口路径写上去,从而进行本地调试。在上线后,需要将服务器配置修改成生产环境域名。
本地调试的目的,在于验证公众号配置与后台接口协议的token(自己手写的一个密匙)
例子代码在 保定尚锋物流项目中的 gzh_acceptAndPushWxNewsToken.json 接口中;
请一定注意,后续如果需要获取unionid,《微信公众平台》中的基本配置中的“IP白名单“一定要配置好,本地调试写上本地IP,发布后,需要填写服务器IP,否者将报错40164
官方文档:
自此,公众号openid与unionID也已经获取完毕,自行写业务逻辑代码;
发送微信公众号模板消息:
发送模板消息首要前提,公众号需要客户进行认证,认证通过后才有这个权限(需要客户掏300块钱)
到《微信公众平台》的后台的模板消息中,选取适合业务逻辑的消息模板,如果没有可以申请,目前一个月允许申请三次,每次的审核周期在7~15天。
选取完毕后,可以在列表看到模板ID等
然后进行业务逻辑模板消息发送
官方技术文档:
我们可以在上述文档中直接Ctrl+F搜索此接口 :
https://api.weixin.qq.com/cgi-bin/message/template/send,
主要就是看此接口,进行模板消息发送;
例子代码在 保定尚锋物流项目中的 WechartSendJobService 中,本人写的一个表专门存发送消息的VO,同通过定时任务推送,当然,可以在业务逻辑代码中及时调用进行推送,定时任务更多的是做补救动作;