·后端配置详解
微信公众平台文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
注:本博文使用的的框架结构是 SpringCloud+Springboot+Mybatis-Plus
1.yml常量配置
#公众号
wxpublic:
appid: x #公众号appid
secret: x #公众号secret
template_id:
remind: x #公众号模板一id(名字见名知意即可)
reply: x #公众号模板二id
#rediskey名字
rediskey:
access_token: WechatPublic:access_token #access_token 存储在redis的key名字
2.1 获取access_token
若是不同业务场景每次拿accesstoken都去请求微信,重复获取将导致上次获取的access_token失效,需定时刷新,保证一致性。access_token默认有7200秒(俩小时)过期时间,所以采取redis将其缓存起来,并设置少于7200秒的时间。每次取用access_token之前都先从redis中获取,若已过期再重新获取。
//============公众号配置参数
@Resource
private RedisTemplate<String, Object> stringRedisTemplate;
@Value("${wxpublic.appid}")
private String wxpublicAppId;
@Value("${wxpublic.secret}")
private String wxpublicAppSecret;
@Value("${wxpublic.rediskey.access_token}")
private String wxpublicAccessTokenRediskey;
//通知模板id
@Value("${wxpublic.template_id.remind}")
private String wxpublicRemindTemplateId;
//回复模板id
@Value("${wxpublic.template_id.reply}")
private String wxpublicReplyTemplateId;
public ResultVO<?> getWxPublicAccessToken() {
//redis中获取access_token
String tokenRedis = (String) stringRedisTemplate.opsForValue().get(wxpublicAccessTokenRediskey);
if (tokenRedis == null) {
//若没有(从未,或者已过期),请求微信获取
//请求微信
JSONObject myAccessToken = WechatApiUtil.getMyAccessToken(wxpublicAppId, wxpublicAppSecret);
if (myAccessToken.containsKey("access_token")) {
String newAccessToken = myAccessToke