失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java微信公众号推送模版消息

Java微信公众号推送模版消息

时间:2022-07-13 05:08:50

相关推荐

Java微信公众号推送模版消息

成品效果图如下

前置条件的准备

申请微信公众号的测试号:申请测试公众号的地址需要的相关依赖 如下

<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.0.0</version></dependency>

申请成功之后会有appID和appsecret这个两个key,根据以上的key获取到微信的WxMpService

@Configurationpublic class WechatConfig {@Value("${wechat.appid}")private String appid;@Value("${wechat.appsecret}")private String appsecret;@Beanpublic WxMpService wxMpService() {WxMpService service = new WxMpServiceImpl();WxMpInMemoryConfigStorage storage = new WxMpInMemoryConfigStorage();storage.setAppId(appid);storage.setSecret(appsecret);service.setWxMpConfigStorage(storage);return service;}}

配置接口信息

在申请完接口信息之后会需要配置一个接口信息,这个地方只支持端口是80和443的,这里直接把tomcat的端口直接改为80就可以了,可以看一下我的也可以直接看微信官方的微信官方接口配置文档,点完确定看到配置成功之后就可以使用了

/*** @param signature 微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。* @param timestamp 时间戳* @param nonce随机数* @param echostr 随机字符串* @return*/@GetMapping(value = "/checkSignature")@ApiOperation(value = "校验微信推送过来的相关信息", notes = "校验微信推送过来的相关信息", response = ApiResultUtils.class)public String checkSignature(String signature, String timestamp,String nonce, String echostr) {return sendMessage.checkSignature(signature, timestamp, nonce, echostr);}

sendMessage.checkSignature(signature, timestamp, nonce, echostr)代码如下

@Overridepublic String checkSignature(String signature, String timestamp, String nonce, String echostr) {// 第一步:自然排序String[] tmp = {token, timestamp, nonce};Arrays.sort(tmp);// 第二步:sha1 加密String sourceStr = StringUtils.join(tmp);String localSignature = DigestUtils.sha1Hex(sourceStr);// 第三步:验证签名if (signature.equals(localSignature)) {return echostr;}return null;}

发送模版消息

这里通过消息模板发送相关的消息,微信上有文档进行介绍微信发送模板消息文档,下面是本人进行配置的步骤

让别人关注测试公众号

创建消息模板

模板标题:💗亲爱的老婆💗模板内容:(模板内容必须按照{{key.DATA}}这个规则进行创建){{first.DATA}} {{second.DATA}} {{third.DATA}} {{fourth.DATA}} {{fifth.DATA}}

现在进行代码编写

toUser是微信号, 在测试微信公众号的页面上可以找到,templateId就是模版id也可以在测试微信公众号的页面上可以找到

@Overridepublic String send() {log.info("进入发送模版信息");// 实例化模板对象WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();// 设置模板IDwxMpTemplateMessage.setTemplateId(templateId);// 设置发送给哪个用户wxMpTemplateMessage.setToUser(toUser);WeatherEntity weatherEntity = null;// 构建消息格式List<WxMpTemplateData> listData = new ArrayList<>(12);// 这里对应着{{first.DATA}} 参数分别是key ,value , colorWxMpTemplateData first = new WxMpTemplateData("first", "一日之计在于晨,早上起床记得刷牙洗脸", "#173177");WxMpTemplateData second = new WxMpTemplateData("second", "当前是: ", "#173177");WxMpTemplateData third = new WxMpTemplateData("third", " 温度:度 天气微凉带好外套,", "#173177");WxMpTemplateData fourth = new WxMpTemplateData("fourth", "当前距离生日还有天"+ " 距离生日还有天", "#173177");WxMpTemplateData fifth = new WxMpTemplateData("fifth", "我们已经在一起" + together + "天", "#173177");// 第二行数据内容 {{first.DATA}}listData.add(first);// 第二行数据内容 {{second.DATA}}listData.add(second);// 第三行数据内容 {{third.DATA}}listData.add(third);// 第四行数据内容 {{fourth.DATA}}listData.add(fourth);// 第五行数据内容 {{fifth.DATA}}listData.add(fifth); // 设置跳转urlwxMpTemplateMessage.setUrl(weatherEntity.getFxLink());String wxTemplateResult = null;// 放进模板对象。准备发送wxMpTemplateMessage.setData(listData);try {if (weatherEntity != null) {// 发送模板wxTemplateResult = wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);if (StrUtil.isNotEmpty(wxTemplateResult)) {log.info("发送成功");}}} catch (WxErrorException e) {e.printStackTrace();}return wxTemplateResult;}

调用当前的方法就可以发送模板消息啦

如果觉得《Java微信公众号推送模版消息》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。