使用前提

  1. 查看自己是否有发送消息模板接口的权限
  2. 点击 消息模板(业务通知)查看相关的api文档

开发版本

  • 开发工具 :IntelliJ IDEA 2022.2.1
  • 数据库 :MySQL Server 5.7
  • JDK :jdk1.8.0_351
  • 使用技术 :SpringBoot 2.5.6 + Mybatis
  • 管理工具 :apache-maven-3.8.6

开始使用

  1. 导入使用消息模板的相关依赖
        <!--JSON解析器和生成器--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.46</version></dependency><!--可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency>
  1. 测试案例
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;import java.io.IOException;
import java.util.Map;public class Tesst {/*** 推送** @param content* @return*/public void push(Map<String, String> content, String openid) throws IOException {//获取用户tokenJSONObject token = GetWXAccessToken.getWxAccessTokenBySecretAndAppid();String access_token = token.getString("access_token");String postUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;JSONObject jsonObject = new JSONObject();jsonObject.put("touser", "需要发送用户的openid(需要是服务号中的用户)");jsonObject.put("template_id", "模板消息ID");JSONObject data = new JSONObject();/*对应消息模板的 key*/data.put("first", getValue("test"));data.put("keyword1", getValue("test"));data.put("keyword2", getValue("test"));data.put("remark", getValue(content.get("remark")));//公众号模板消息所要跳转的小程序,小程序的必须与公众号具有绑定关系JSONObject miniprogram = new JSONObject();//小程序APPIDminiprogram.put("appid", "小程序APPID");//跳转到小程序的页面路径miniprogram.put("pagepath", "跳转到小程序的页面路径");jsonObject.put("miniprogram", miniprogram);jsonObject.put("data", data);jsonObject.put("miniprogram", miniprogram);String string = HttpClientUtils.sendPostJsonStr(postUrl, jsonObject.toJSONString());JSONObject result = JSON.parseObject(string);//System.out.println("result => "+result);int errcode = result.getIntValue("errcode");if (errcode == 0) {// 发送成功System.out.println("发送成功");} else {// 发送失败System.out.println("发送失败");}}/*** 获取data** @param value* @return*/private JSONObject getValue(String value) {// TODO Auto-generated method stubJSONObject json = new JSONObject();json.put("value", value);json.put("color", "#173177");return json;}
}
  1. 相关工具类
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;import java.util.HashMap;
import java.util.Map;/*** 获取微信公众号的 access_token(接口凭证)*/
public class GetWXAccessToken {/*** 获取Access token,通过第三方用户唯一凭证 和 第三方用户唯一凭证密钥* @return Access token*/public static JSONObject getWxAccessTokenBySecretAndAppid(){String url = "https://api.weixin.qq.com/cgi-bin/token";Map<String, String> map = new HashMap<>();map.put("grant_type","client_credential");map.put("appid","开发者ID(AppID)");map.put("secret","开发者密码(AppSecret)");JSONObject jsonObject = JSON.parseObject(HttpUtil.doPost(url,map));return jsonObject;}
}
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @author zhuzhe* @date 2017/12/11* HttpClient工具类*/
public class HttpClientUtils {/*** 以jsonString形式发送HttpPost的Json请求,String形式返回响应结果** @param url* @param jsonString* @return*/public static String sendPostJsonStr(String url, String jsonString) throws IOException {if (jsonString == null || jsonString.isEmpty()) {return sendPost(url);}String resp = "";StringEntity entityStr = new StringEntity(jsonString,ContentType.create("text/plain", "UTF-8"));CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);httpPost.setEntity(entityStr);CloseableHttpResponse response = null;try {response = httpClient.execute(httpPost);HttpEntity entity = response.getEntity();resp = EntityUtils.toString(entity, "UTF-8");EntityUtils.consume(entity);} catch (ClientProtocolException e) {System.out.println(e.getMessage());} catch (IOException e) {System.out.println(e.getMessage());} finally {if (response != null) {try {response.close();} catch (IOException e) {System.out.println(e.getMessage());}}}if (resp == null || resp.equals("")) {return "";}return resp;}/*** 发送s不带参数的HttpPot请求** @param url* @return*/public static String sendPost(String url) throws IOException {// 1.获得一个httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();// 2.生成一个post请求HttpPost httppost = new HttpPost(url);CloseableHttpResponse response = null;try {// 3.执行get请求并返回结果response = httpclient.execute(httppost);} catch (IOException e) {System.out.println(e.getMessage());}// 4.处理结果,这里将结果返回为字符串HttpEntity entity = response.getEntity();String result = null;try {result = EntityUtils.toString(entity);} catch (ParseException | IOException e) {System.out.println(e.getMessage());}return result;}
}

微信服务号申请消息模板

  1. 在 新的功能 - 未开通几面找,因为我的是已经开通过了的,所以在 已开通 里
  2. 需要申请开通,然后等待审核
  3. 审核通过后,可以在列表中看到 模板消息 。根据自己的需求申请相对应的模板。点击详情 查看模板相对应的消息
  4. 发送模板消息的内容,按照模板中的key填写。

微信小程序使用微信服务号推送消息相关推荐

  1. wx小程序,前端公众号推送消息

    wx小程序,前端引导用户关注公众号推送消息 第一步: 在小程序登录后,请求后台得到返回是否关注公众号字段(如果有关注后台是有unionID的),将该字段存入storage中,在首页处拿来判断显隐' 引 ...

  2. 微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ

    微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ 一.获取用户信息 1.首先我们需要了解什么是微信用户的OpenID 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密 ...

  3. python写微信小程序源码示例_python实现微信小程序用户登录、模板推送

    python实现微信小程序用户登录.模板推送 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  python实现微信小程序用户登录.模板推送.txt ] (友情提示 ...

  4. 微信小程序 调取云函数 信息推送失败response out of time limit or subscription is canceled hint的具体解决方法

    微信小程序 调云函数 信息推送失败,提示errcode":45015,"errmsg":"response out of time limit or subsc ...

  5. 微信小程序跳转公众号推文

    注:笔者是自学小程序,自身开发经验不足,代码肯定存在不规范和不足,该博客参考一下就好 完整项目代码:https://github.com/zim-keavin/wxapp-cloud-demo 实现在 ...

  6. 微信小程序通过服务号推送模板消息

    前言 公司要做一款新的微信小程序,因为业务需求要加入消息推送.因为之前APP是通过服务号推送给用户消息的,所以微信小程序要做消息推送也是首先想到了通过服务号推送.事实上在使用过程中服务号推送还是非常好 ...

  7. 微信小程序使用微信公众号的模板消息进行消息推送开发流程

    微信小程序使用微信公众号的模板消息进行消息推送开发流程 微信公众号服务号,微信公众号订阅号,微信公众号开发者平台,微信小程序 这些的账号都是独立的不能共用 微信开放平台开发者资质认证审核费用为300元 ...

  8. 微信小程序怎么打通视频号?只差一个自定义版交易组件

    今年以来视频号成为了腾讯新宠,现在视频号日活逼近6亿,早已全面超过快手的3.47亿,并有望在短期内追上抖音.而这样的用户规模,抖音走了6年,视频号只走了2年.木鱼小铺(www.muyu007.cn)相 ...

  9. 免费微信小程序,发一发打造微信小程序Saas营销服务移动工具箱

    微信是这个时代的伟大产物:小程序是微信的伟大产物:"发一发"承接伟大的产物,为广大用户提供免费的服务. 我们不知道下个时代会有什么形象级的产品诞生.但是,我们能抓住的就是眼前的所见 ...

最新文章

  1. 语言中knitr_R语言软件包的批量引用
  2. 第二百九十二节,RabbitMQ多设备消息队列-Python开发
  3. 8.非关系型数据库(Nosql)之mongodb的应用场景(关系型数据库 和 Mongodb进行CRUD时数据用时的比较)
  4. 删除A数据表中的一行数据时,不小心将表名写成了B,现在想恢复B中刚删除的的着一行数据怎么办...
  5. PYTHON之路(八)
  6. Leetcode PHP题解--D68 283. Move Zeroes
  7. python深度学习第一讲——用python写神经网络
  8. asp.net+sql数据库学生信息管理系统
  9. 从零基础入门Tensorflow2.0 ----一、3.3 实战深度神经网络(激活函数)
  10. 用protobuf进行C#与Java通信
  11. creo绘图属性模板_Creo (ProE) 电极工程图图框配置详细教程 (提供模板prt文档下载)|工程制图|图文教程|PTC在线社区...
  12. 论文参考文献格式写法
  13. 你没有权限修改该网络位置的文件
  14. 一个实用的在线文档格式转换器
  15. [TYVJ1827]『Citric II』一道防AK好题
  16. centos7网卡问题
  17. RTX4070ti-40系列显卡配置pytorch深度学习环境过程
  18. homeassistants应用1-家庭监控摄像头
  19. 诺禾-NFS 效劳器
  20. 企业中深信服防火墙旁挂部署

热门文章

  1. r7 4750g和r7 5800x哪个好
  2. 计算机启动蓝屏,电脑开机显示蓝屏,遇到问题需要重启怎么办?看过来
  3. Ubuntu下快速关机的方法
  4. java基础 - 1
  5. ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版
  6. apache配置指令速查
  7. 在JME中遇到org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: 问题的解决方法
  8. 利用python将PDF文档转语音
  9. Blender材质贴图入门图文教程
  10. RSK<->以太坊 trusted bridge