微信小程序开发 发送模板信息
之前的文档找不到了,参考这个
官方文档 必看
下面是主要的代码实现:
采用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();}}
}
微信小程序开发 发送模板信息相关推荐
- PHP小程序接口的模板消息,微信小程序PHP 发送模板消息通知
注意: 首先,模板消息接口需写在后台服务器上.[追加!目前微信小程序 模板消息只能本人触发并发给本人.] 2018.4.9修改 :1次提交表单可下发1条,多次提交下发条数独立,相互不影响: 1次支付 ...
- 2019最新微信小程序开发制作模板
闪云科技小程序,包含多样化的模板和可视化操作页面,能够快速创建各类版本小程序. 单页版: 单页版小程序是单页面的广告墙,主要功能包括:富文本.图片展示.视频播放.地图导航.电话拨打,为创业者提供形象展 ...
- 微信小程序js发送模板消息
微信小程序的Java的的后台获取的的的access_token存储数据库并接通本更新https://blog.csdn.net/weixin_41716049/article/details/8406 ...
- 微信小程序开发----获取用户信息
今天介绍两种微信小程序获取用户信息的方法 第一中直接授权获取(在同一页面之中): 首先在微信程序一个页面的WXML文件写入获取用户信息的按钮 <!-- bindTap用于绑定事件 --> ...
- 微信小程序开发template模板使用
在小程序开发过程中,一个项目需要在多处页面使用类似的模块,就需要创建模板减少代码量,同时提高代码复用度.小程序通过template 标签使用模板,template 标签的 is 属性与模板的 name ...
- 微信小程序之发送模板消息(通过openid推送消息给用户)
一.获取access_token access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的access_token失效.(注:不建议每次调用需要acce ...
- 微信小程序开发02(模板语法与事件绑定)
模板语法与事件绑定
- 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 微信小程序开发的作用_分享微信小程序开发可以实现什么
现在小程序在众多场所都有出现过,小程序开发迎来了飞速发展时期.目前微信小程序开发分为模板开发和定制开发.那么,对比来说定制小程序开发优势有哪些? 1.开发过程更可控 定制化开发更具体,从开发前对产品定 ...
- 微信小程序开发学习2(模板与配置)
微信小程序开发学习2(模板与配置) 1.学习目标 能够使用WXML模板语法渲染页面结构 能够使用WXSS样式美化页面结构 能够使用app,json对小程序进行全局性配置 能够使用page.json对小 ...
最新文章
- fiddler抓取https的最终说明
- w命令、vmstat命令、top命令、sar命令、noload命令
- SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
- 突破性能极限——阿里云神龙最新ASPLOS论文解读
- 全排列及相关扩展算法(六)——全排列最蛋疼的算法:邻位对换法
- Java toString()方法的要点
- C++基础::mutable 关键字
- 饮食与癌细胞代谢的分子联系
- 典型微型计算机的基本结构包括,第二章 微型计算机基础.doc
- 项目-基于SSM的订餐管理系统
- Mac_IOS_报:The Xcode build system has crashed. Please close and reopen your workspace.
- 25-javaweb接入支付宝支付接口
- 计算机底层:进程与线程。
- Kalman滤波算法原理(Matlab/C/C++)
- 用cmd执行命令方法汇总
- 基于WebGL架构的3D可视化平台—城市地下管线3D可视化
- 高维数组matlab,MATLAB 高维数组
- JDK8新特性(三):集合之 Stream 流式操作
- bandzip和360解压_压缩软件哪家强?
- android计步器摘要,【使用总结】蓝牙|连接|步数|设置_摘要频道_什么值得买
热门文章
- Python做出来的数据可视化真香!!
- java 6面骰子_Java实现的简单掷骰子游戏示例
- java计算机毕业设计网上书城网站源码+系统+数据库+lw文档+mybatis+运行部署
- 中文语句情感分类系统的设计与实现
- Linux内核学习路线 学习linux内核的建议
- iOS 10.1发现新漏洞:可绕过“激活锁”强行进入主屏
- 国美易卡设置cookie域,国美易卡匹配domain
- 计算机网络安全漏洞排查报告,网络安全漏洞自查报告.docx
- C语言malloc函数的用法
- 服务器lnixs系统,Navicat for MySQL v12.1.19 强大的数据库管理和开发工具 _ 黑苹果乐园...