以下例子是简单的使用Java代码实现微信公众号推送模板消息,不包含跳转到小程序网页代码

1、pom.xml文件中添加依赖

     <!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.wso2.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.3.1.wso2v1</version></dependency><dependency><groupId>org.wso2.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.1.wso2v1</version></dependency><!-- json --><dependency><groupId>top.jfunc.json</groupId><artifactId>json-fastjson</artifactId><version>1.8.3</version></dependency>

2、实体类

@Getter
@Setter
public class DataEntity {   //内容private String value;//字体颜色private String color;public DataEntity(String value ,String color){this.value = value;this.color = color;}
}

3、实现类: 有“XXX”的地方需要修改,其他地方可以不用动。应用ID、密钥、模板ID等信息可以登录微信公众号开放平台,查看自己公司对应的信息

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gzds.entity.DataEntity;@Component
public class WechatMsg {public static void main(String[] args) {WechatMsg wm = new WechatMsg();wm.SendWeChatMsg(wm.getToken());}/*** 获取token* * @return token*/public String getToken() {// 授予形式String grant_type = "client_credential";//应用IDString appid = "XXXXXXXXXXXXXXXXXXX";//密钥String secret = "XXXXXXXXXXXXXXXXXXXXXXXXXX";// 接口地址拼接参数String getTokenApi = "https://api.weixin.qq.com/cgi-bin/token?grant_type=" + grant_type + "&appid=" + appid+ "&secret=" + secret;String tokenJsonStr = doGetPost(getTokenApi, "GET", null);JSONObject tokenJson = JSONObject.parseObject(tokenJsonStr);String token = tokenJson.get("access_token").toString();System.out.println("获取到的TOKEN : " + token);return token;}/**** 发送消息* * @param token*/public void SendWeChatMsg(String token) {// 接口地址String sendMsgApi = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token;//openIdString toUser = "XXXXXXXXXXXXXX";//消息模板IDString template_id = "XXXXXXXXXXXXXXXXXXXXXX";//整体参数mapMap<String, Object> paramMap = new HashMap<String, Object>();//消息主题显示相关mapMap<String, Object> dataMap = new HashMap<String, Object>();//根据自己的模板定义内容和颜色dataMap.put("first",new DataEntity("详细内容XXXXXXX","#173177"));dataMap.put("keyword1",new DataEntity("私有化部署XXX","#173177"));dataMap.put("keyword2",new DataEntity("2020-08-18XXX" ,"#173177"));dataMap.put("remark",new DataEntity("申请成功XXX","#173177"));paramMap.put("touser", toUser);paramMap.put("template_id", template_id);paramMap.put("data", dataMap);paramMap.put("url",toUrl);//需要实现跳转网页的,可以添加下面一行代码实现跳转// paramMap.put("url","http://xxxxxx.html");System.out.println(doGetPost(sendMsgApi,"POST",paramMap));}/*** 调用接口 post* @param apiPath*/public String doGetPost(String apiPath,String type,Map<String,Object> paramMap){OutputStreamWriter out = null;InputStream is = null;String result = null;try{URL url = new URL(apiPath);// 创建连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setDoOutput(true);connection.setDoInput(true);connection.setUseCaches(false);connection.setInstanceFollowRedirects(true);connection.setRequestMethod(type) ; // 设置请求方式connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式connection.connect();if(type.equals("POST")){out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码out.append(JSON.toJSONString(paramMap));out.flush();out.close();}// 读取响应is = connection.getInputStream();int length = (int) connection.getContentLength();// 获取长度if (length != -1) {byte[] data = new byte[length];byte[] temp = new byte[512];int readLen = 0;int destPos = 0;while ((readLen = is.read(temp)) > 0) {System.arraycopy(temp, 0, data, destPos, readLen);destPos += readLen;}result = new String(data, "UTF-8"); // utf-8编码}} catch (IOException e) {e.printStackTrace();} finally {try {is.close();} catch (IOException e) {e.printStackTrace();}}return  result;}
}

4、效果图

如果有不知道怎么获取用户openId的朋友,可以试一下下图的方法:在用户管理界面,按F12,可以从HTML页面中找到用户id

欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢

你的点赞是我最大的鼓励

简单使用Java实现微信公众号推送模板消息相关推荐

  1. 微信公众号推送模板消息

    前言 因为微信接口的改版 无法获得用户的信息 只能通过用户注册拿到openid进行模板消息推送 首先查看文档 模板消息接口文档 如文档所示,我们需要的参数有access_tocken,template ...

  2. 微信公众号推送模板消息工具类

    微信公众平台: 开通 模板消息功能 : 添加消息模板: 将模板id复制作为后台参数: 后台(java): 使用时直接调用WechatModelMessage.sendWechatmsgToUser() ...

  3. 记录使用.netcore 完成微信公众号推送模板消息

    /// <summary>/// 微信公众号发送消息/// </summary>/// <param name="data"></para ...

  4. 公众号推送模板消息(JAVA版)

    公众号推送模板消息(JAVA版) 先贴上官方文档 步骤不多:组装请求体,调用接口 接口:(POST)https://api.weixin.qq.com/cgi-bin/message/template ...

  5. nginx日志报警|微信公众号推送预警消息|PHP+shell脚本实现nginx错误日志报警恶意访问报警,实时通知到微信公众号 | 小型网站nginx日志报警轻量级方案

    1.shell脚本 命名:run.sh #!/bin/bash #!/usr/bin/python # -*- coding:utf-8 -*- #日志文件路径 accesslog=/www/wwwl ...

  6. 微信公众号推送图文消息

    需求 准备工作 代码编写 最终效果 目录 需求 用户在做完某个操作后,发送图文消息到用户微信公众号显示提醒 准备工作 公众号为服务号 获取公众号token 代码编写 public static voi ...

  7. 小程序给绑定的公众号推送模板消息

    //该小程序用户的openid 前提时该用户已关注公众号public AjaxResult sendWXMessage(String openId) {String token = getToken( ...

  8. 公众号推送模板消息,跳转小程序报错INVALID WEAPP PAGEPATH

    invalid weapp pagepath rid: 62d930f0-50070964-005e3fc6 这是微信示例: 在检查自己代码发现路径写错了.pagepath  要写对,前面可以不加斜线

  9. 【设计模式】之观察者模式——简单的“微信公众号推送消息给相关用户”

    目录 一.简单介绍 二.观察者模式涉及的4个角色 三.观察者模式demo:简单的"微信公众号推送消息给相关用户" 一.简单介绍 定义对象间"一对多"的依赖关系. ...

  10. Java微信公众号推送消息

    Java微信公众号推送消息 1.导入pom文件 2.编写yml文件 3.配置文件 4.配置bean 5.service 模板消息主要代码 6.外放接口测试 ==注:== 1.控制台报40164,解决方 ...

最新文章

  1. 好莱坞电影公司系列电影
  2. 文档知多少---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十五)[转]...
  3. 【译】Introduction to Smart Contract and DApp Security
  4. css3 定义选择器
  5. git学习2--提交和拉取代码
  6. 在Ubuntu和CentOS上搭建NodeJs的执行环境步骤
  7. 一个意想不到的CDO.Message 错误
  8. 软考信息安全工程师好考吗?
  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java新华书店o2o服务系统89nml
  10. 创意的个人简历tab网站模板
  11. Java 拾遗补阙 ----- 继承私有属性
  12. DLL load failed while importing _imaging
  13. C++ 有理数运算符重载
  14. 近视眼用什么台灯比较好?防近视眼护眼台灯排名
  15. 5G通信技术书籍分享(持续更新)
  16. 天载优配解读全商场亏钱效应浓郁
  17. 设定了所有种子后每次结果还是不一样 pytorch可重复 可复现问题
  18. 日语形容词变化规律总结
  19. 【Multisim仿真】LM339过零电路仿真
  20. iframe跨域消息传递

热门文章

  1. 2.12 Excel软件各工作区的显示和隐藏 [原创Excel教程]
  2. AIGC:自动化内容生成,AI 的下一个引爆点?
  3. SplitContainer控件扩展之收缩面板
  4. 如何用计算机制作个人简历,制作个人简历的模板(电脑个人简历制作步骤)
  5. ExtendSim 10.0.8发布于 2021年8月7日
  6. 剪切板 html 查看器,如何打开剪贴板查看器
  7. python3提供了什么函数从标准输入读入一行文本_Python3 提供了print函数从标准输入(如键盘)读入一行文本...
  8. 解决 批处理 for 体内的字符串截取问题
  9. 深入浅出Word2Vec原理解析
  10. 数据可视化API之弧线图实现