之前的文档找不到了,参考这个
官方文档 必看

下面是主要的代码实现:
采用hutool工具包发http请求
依赖:

     <!--Hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.16</version></dependency>

yaml文件中配置

#微信支付
wechat-payment:#微信小程序设置wechat-mini-app:#微信小程序APP IDapp-id: "xxx"#微信小程序APP SECRETapp-secret: "xxx"

代码:

实体类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult<T> {/*** 是否成功*/Boolean isSuccess;/*** 信息*/String message;/*** 数据*/T data;}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WechatMessageData {/*** 要下发的模板ID*/String templateId;/*** 要发送的用户的OpenId*/List<String> userOpenIdList;/*** 关键词列表*/Map<String,String> keywordsMap;
}
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.sdyspx.stateartexam.manage.pojo.CommonResult;
import org.sdyspx.stateartexam.manage.pojo.WechatMessageData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;
import java.util.Map;@Slf4j
@RestController
public class MessageController {/*** 微信支付小程序APP ID*/@Value("${wechat-payment.wechat-mini-app.app-id}")String WECHAT_MINI_APP_APP_ID;/*** 微信支付小程序APP SECRET*/@Value("${wechat-payment.wechat-mini-app.app-secret}")String WECHAT_MINI_APP_APP_SECRET;/*** 微信AccessToken过期时间*/Integer WECHAT_ACCESS_TOKEN_EXPIRE_SECOND = 7000;/*** 微信AccessToken*/String wechatAccessToken;/*** 微信AccessToken生成时间*/Date wechatAccessTokenRequestTime = new Date();@PostMapping("/message/sendWechatMessage")public CommonResult<Boolean> sendWechatMessage(@RequestBody WechatMessageData wechatMessageData) {//关键词列表Map<String, String> keywordsMap = wechatMessageData.getKeywordsMap();//构建数据JSONObject elementData = new JSONObject();//构建keywordsMap.forEach((key, value) -> {JSONObject keywordsValue = new JSONObject();keywordsValue.put("value", value);elementData.put(key, keywordsValue);});//获取微信AccessTokenString accessToken = getAccessToken();if (accessToken == null) {return new CommonResult<>(false, "无法获取accessToken", false);}//群发数据for (String userOpenID : wechatMessageData.getUserOpenIdList()) {JSONObject messageData = new JSONObject();messageData.put("touser", userOpenID);messageData.put("template_id", wechatMessageData.getTemplateId());messageData.put("data", elementData);String result = HttpUtil.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken, messageData.toJSONString());log.info(result);}return new CommonResult<>(true, "成功", true);}/*** @return 获取AccessToken*/private String getAccessToken() {//初始化情况Date currentData = new Date();//比较时间大小long betweenSeconds = DateUtil.between(wechatAccessTokenRequestTime, currentData, DateUnit.SECOND);if (wechatAccessToken == null || betweenSeconds > WECHAT_ACCESS_TOKEN_EXPIRE_SECOND) {//更新AccessTokenupdateAccessToken();//更新获取时间wechatAccessTokenRequestTime = new Date();}return wechatAccessToken;}/*** 更新AccessToken*/private void updateAccessToken() {JSONObject jsonObject = new JSONObject();try {String result = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/token" +"?grant_type=client_credential" +"&appid=" + WECHAT_MINI_APP_APP_ID+ "&secret=" + WECHAT_MINI_APP_APP_SECRET);jsonObject = JSON.parseObject(result);wechatAccessToken = jsonObject.getString("access_token");} catch (Exception exception) {exception.printStackTrace();}}
}

微信小程序开发 发送模板信息相关推荐

  1. PHP小程序接口的模板消息,微信小程序PHP 发送模板消息通知

    注意: 首先,模板消息接口需写在后台服务器上.[追加!目前微信小程序  模板消息只能本人触发并发给本人.] 2018.4.9修改 :1次提交表单可下发1条,多次提交下发条数独立,相互不影响: 1次支付 ...

  2. 2019最新微信小程序开发制作模板

    闪云科技小程序,包含多样化的模板和可视化操作页面,能够快速创建各类版本小程序. 单页版: 单页版小程序是单页面的广告墙,主要功能包括:富文本.图片展示.视频播放.地图导航.电话拨打,为创业者提供形象展 ...

  3. 微信小程序js发送模板消息

    微信小程序的Java的的后台获取的的的access_token存储数据库并接通本更新https://blog.csdn.net/weixin_41716049/article/details/8406 ...

  4. 微信小程序开发----获取用户信息

    今天介绍两种微信小程序获取用户信息的方法 第一中直接授权获取(在同一页面之中): 首先在微信程序一个页面的WXML文件写入获取用户信息的按钮 <!-- bindTap用于绑定事件 --> ...

  5. 微信小程序开发template模板使用

    在小程序开发过程中,一个项目需要在多处页面使用类似的模块,就需要创建模板减少代码量,同时提高代码复用度.小程序通过template 标签使用模板,template 标签的 is 属性与模板的 name ...

  6. 微信小程序之发送模板消息(通过openid推送消息给用户)

    一.获取access_token  access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的access_token失效.(注:不建议每次调用需要acce ...

  7. 微信小程序开发02(模板语法与事件绑定)

    模板语法与事件绑定

  8. 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  9. 微信小程序开发的作用_分享微信小程序开发可以实现什么

    现在小程序在众多场所都有出现过,小程序开发迎来了飞速发展时期.目前微信小程序开发分为模板开发和定制开发.那么,对比来说定制小程序开发优势有哪些? 1.开发过程更可控 定制化开发更具体,从开发前对产品定 ...

  10. 微信小程序开发学习2(模板与配置)

    微信小程序开发学习2(模板与配置) 1.学习目标 能够使用WXML模板语法渲染页面结构 能够使用WXSS样式美化页面结构 能够使用app,json对小程序进行全局性配置 能够使用page.json对小 ...

最新文章

  1. fiddler抓取https的最终说明
  2. w命令、vmstat命令、top命令、sar命令、noload命令
  3. SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
  4. 突破性能极限——阿里云神龙最新ASPLOS论文解读
  5. 全排列及相关扩展算法(六)——全排列最蛋疼的算法:邻位对换法
  6. Java toString()方法的要点
  7. C++基础::mutable 关键字
  8. 饮食与癌细胞代谢的分子联系
  9. 典型微型计算机的基本结构包括,第二章 微型计算机基础.doc
  10. 项目-基于SSM的订餐管理系统
  11. Mac_IOS_报:The Xcode build system has crashed. Please close and reopen your workspace.
  12. 25-javaweb接入支付宝支付接口
  13. 计算机底层:进程与线程。
  14. Kalman滤波算法原理(Matlab/C/C++)
  15. 用cmd执行命令方法汇总
  16. 基于WebGL架构的3D可视化平台—城市地下管线3D可视化
  17. 高维数组matlab,MATLAB 高维数组
  18. JDK8新特性(三):集合之 Stream 流式操作
  19. bandzip和360解压_压缩软件哪家强?
  20. android计步器摘要,【使用总结】蓝牙|连接|步数|设置_摘要频道_什么值得买

热门文章

  1. Python做出来的数据可视化真香!!
  2. java 6面骰子_Java实现的简单掷骰子游戏示例
  3. java计算机毕业设计网上书城网站源码+系统+数据库+lw文档+mybatis+运行部署
  4. 中文语句情感分类系统的设计与实现
  5. Linux内核学习路线 学习linux内核的建议
  6. iOS 10.1发现新漏洞:可绕过“激活锁”强行进入主屏
  7. 国美易卡设置cookie域,国美易卡匹配domain
  8. 计算机网络安全漏洞排查报告,网络安全漏洞自查报告.docx
  9. C语言malloc函数的用法
  10. 服务器lnixs系统,Navicat for MySQL v12.1.19 强大的数据库管理和开发工具 _ 黑苹果乐园...