首先到微信小程序的官网,选择合适自己的订阅消息模板。

寻找到适合自己的模板之后,记住模板ID,点开详情,记住每个字段id

微信小程序订阅消息官网文档介绍地址:小程序订阅消息 | 微信开放文档 (qq.com)

微信小程序订阅消息接口:发送订阅消息 | 微信开放文档 (qq.com)

咱们需要做的就是把所有需要发送的内容信息变成如下的请求格式发送到微信的api即可

下边打开IDAE,创建工具类

package com.lbk.hcix.kcsjlbk.util;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;import javax.swing.*;/*** @Author LBK* @Date 2022/12/18 18:11*/
public class WxUtil {/*** 获取小程序全局唯一后台接口调用凭据(access_token)* @return*/
//    public static String getWxAccessToken(){
//        //从redis缓存中获取AccessToken,有且未过期,直接返回;否则重新获取
//        String accessToken =RedisManager.get("accessToken");
//        if(Tool.notEmpty(accessToken)){
//            return accessToken;
//        }
//        //重新获取accessToken,并存入redis
//        String newToken = getAccessToken();
//        //存入redis
//        RedisManager.set("accessToken", newToken, 7000);
//        return newToken;
//    }/*** 调用微信开放接口 获取小程序全局唯一后台接口调用凭据(access_token)* @return*/public static String getAccessToken(){//String APPID=App.APPID;//String APPSECRET=App.APP_SECRET;String APPID="自己的id";String APPSECRET="自己的密钥";String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+APPID+"&secret="+APPSECRET;System.out.println("accessTokenUrl = " + accessTokenUrl);HttpClientUtil hru = new HttpClientUtil();String access_token = hru.sendHttpGet(accessTokenUrl);JSONObject jsonObject= JSON.parseObject(access_token);String token = jsonObject.get("access_token").toString();//获取access_token
//        if(Tool.isEmpty(access_token)){
//            access_token="";
//        }
//        System.out.println("json:"+json.toString());System.out.println("access_token = " + token);return token;}/*** 调用微信开放接口subscribeMessage.send发送订阅消息(固定模板的订阅消息)* POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN*/public static void sendSubscribeMessage(String toUserOpenId){HttpURLConnection httpConn = null;InputStream is = null;BufferedReader rd = null;String accessToken = null;String str = null;try{//获取token  小程序全局唯一后台接口调用凭据accessToken = getAccessToken();JSONObject xmlData = new JSONObject();xmlData.put("touser", toUserOpenId);//接收者(用户)的 openidxmlData.put("template_id", "a9Nk8CNzZVmhn5QPIDOlWp7FhbvzDqPFTHVhH9CAgJY");//所需下发的订阅模板idxmlData.put("page", "pages/index/index");//点击模板卡片后的跳转页面,仅限本小程序内的页面xmlData.put("miniprogram_state", "developer");//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版xmlData.put("lang", "zh_CN");//进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN返回值/*** 订阅消息参数值内容限制说明thing.DATA:20个以内字符;可汉字、数字、字母或符号组合time.DATA:24小时制时间格式(支持+年月日),支持填时间段,两个时间点之间用“~”符号连接*/JSONObject data = new JSONObject();//取餐号JSONObject character_string4 = new JSONObject();//character_string4必须和模板消息的字段id一致,以下同样,必须要一致,注意时间格式,详情看图二character_string4.put("value", "1001");data.put("character_string4", character_string4);//购买商品JSONObject thing5 = new JSONObject();thing5.put("value", "牛肉水饺");data.put("thing5", thing5);//温馨提示JSONObject thing11 = new JSONObject();thing11.put("value", "请到前台出示二维码取餐哦!");data.put("thing11", thing11);xmlData.put("data", data);//小程序模板数据System.out.println("发送模板消息xmlData:" + xmlData);URL url = new URL("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+ accessToken);httpConn = (HttpURLConnection)url.openConnection();httpConn.setRequestProperty("Host", "https://api.weixin.qq.com");// httpConn.setRequestProperty("Content-Length", String.valueOf(xmlData.));httpConn.setRequestProperty("Content-Type", "text/xml; charset=\"UTF-8\"");httpConn.setRequestMethod("POST");httpConn.setDoInput(true);httpConn.setDoOutput(true);OutputStream out = httpConn.getOutputStream();OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");osw.write(xmlData.toString());osw.flush();osw.close();out.close();is = httpConn.getInputStream();rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));while ((str = rd.readLine()) != null){System.out.println("返回数据:" + str);}}catch (Exception e){System.out.println("发送模板消息失败.." + e.getMessage());}}/*** 调用微信开放接口subscribeMessage.send发送订阅消息    通用类* POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN*/public static void sendCommonSubscribeMessage(Map<String,Object> params,JSONObject data){HttpURLConnection httpConn = null;InputStream is = null;BufferedReader rd = null;String accessToken = null;String str = null;try{//获取token  小程序全局唯一后台接口调用凭据accessToken = getAccessToken();JSONObject xmlData = new JSONObject();xmlData.put("touser", params.get("touser"));//接收者(用户)的 openidxmlData.put("template_id", params.get("template_id"));//所需下发的订阅模板idxmlData.put("page", params.get("page"));//点击模板卡片后的跳转页面,仅限本小程序内的页面xmlData.put("miniprogram_state", params.get("miniprogram_state"));//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版xmlData.put("lang", "zh_CN");//进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN返回值xmlData.put("data", data);//小程序模板数据System.out.println("发送模板消息xmlData:" + xmlData);URL url = new URL("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+ accessToken);httpConn = (HttpURLConnection)url.openConnection();httpConn.setRequestProperty("Host", "https://api.weixin.qq.com");// httpConn.setRequestProperty("Content-Length", String.valueOf(xmlData.));httpConn.setRequestProperty("Content-Type", "text/xml; charset=\"UTF-8\"");httpConn.setRequestMethod("POST");httpConn.setDoInput(true);httpConn.setDoOutput(true);OutputStream out = httpConn.getOutputStream();OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");osw.write(xmlData.toString());osw.flush();osw.close();out.close();is = httpConn.getInputStream();rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));while ((str = rd.readLine()) != null){System.out.println("返回数据:" + str);}}catch (Exception e){System.out.println("发送模板消息失败.." + e.getMessage());}}public static void main(String[] args) {String openid = "需要接收订阅消息的openid";//需要该用户已经授权过该订阅消息才能发送sendSubscribeMessage(openid);//调用发送方法测试结果,数据是写死的,开发者可根据实际情况进行改写填充,真正调用只需把数据传入sendCommonSubscribeMessage方法即可}
}

实际使用只需要把接收方的信息,模板 信息设置好,调用即可

//设置接收订阅消息Map<String,Object> params=new HashMap<String, Object>();params.put("touser", 内容);//接收者(用户)的 openidparams.put("template_id", "BTZydqCApnRtRdFgabCSd2wAVosyxLhV46wnEnO2tb4");//所需下发的订阅模板idparams.put("page", "/pages/test2/index“);//点击模板卡片后的跳转页面,仅限本小程序内的页面params.put("miniprogram_state", "trial");//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版params.put("lang", "zh_CN");//进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN返回值/*** data:小程序模板数据* 订阅消息参数值内容限制说明thing.DATA:20个以内字符;可汉字、数字、字母或符号组合time.DATA:24小时制时间格式(支持+年月日),支持填时间段,两个时间点之间用“~”符号连接*/JSONObject data = new JSONObject();//订单号JSONObject character_string3= new JSONObject();character_string3.put("value", 内容);data.put("character_string3", character_string3);//购买商品JSONObject thing6= new JSONObject();thing6.put("value",内容);data.put("thing6", thing6);//创建时间JSONObject time7 = new JSONObject();time7.put("value", 内容);data.put("time7", time7);//金额JSONObject amount4 = new JSONObject();amount4.put("value", 内容);data.put("amount4", amount4);WxUtil.sendCommonSubscribeMessage(params,data);//调用发送

使用Java实现微信小程序订阅消息相关推荐

  1. Java开发微信小程序订阅消息推送

    使用到开源工具WxJava 这里环境使用到springboot 框架,废话不多说直接上干货. pom.xml引用 <!-- https://mvnrepository.com/artifact/ ...

  2. 微信公众号 - Java推送小程序订阅消息给用户

    不啰嗦,我们直接开始! 本文使用体验版小程序进行调试. 一.开发前小程序准备: 1.登录微信公众平台 点开下面链接,使用微信扫码 微信公众平台 然后选择一个小程序并登录 2.在小程序后台找到Appid ...

  3. 化繁为简,我用”知晓推送”开发微信小程序订阅消息

    知晓云在2019年十月份左右就上线了微信小程序订阅消息这个服务,后来迭代升级,又相继提供了相应的sdk插件,然而这之前,我却没有很认真,花精力去使用这些服务,刚好国庆几天假,我就熬了两个通宵,将这个小 ...

  4. 微信小程序订阅消息定时发送消息

    微信小程序订阅消息定时发送消息 本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线. 如果觉得我讲的好就可以给我点个赞.也可以加我微信了解详情. 1.我们先要了解什么是订阅消息 而现在 ...

  5. 微信小程序订阅消息失败

    微信小程序订阅消息失败 之前测试微信小程序订阅消息都是正常的,并且支持开发工具的调试,但是同样的方法换到另一个页面通过表单提交触发就没有效果.调试之后发现报错信息,errMsg: "requ ...

  6. 【Node.js】实现微信小程序订阅消息推送功能

    实战项目名称:实现微信小程序订阅消息通知 文章目录 一.实战步骤 1. 登录微信小程序管理端,添加订阅消息模板 2. 定义好需要发送的消息 3.获取小程序的access_token 4. 发起请求,向 ...

  7. 微信小程序 订阅消息授权

    wx.requestSubscribeMessage({tmplIds: ['9SgmLcxEfKMfS48xRYqBap3n3o8tFYGcg1RY5_mswCA', 'LUxUBwDrB3OTZB ...

  8. 微信小程序订阅消息推送(附带后台java代码)

    官方文档: 小程序前端:点击进入 小程序服务端:点击进入 一,代码实现(后端) ①定义实体类 package com.saic.fin.system.sendInfo;import lombok.Da ...

  9. 【实战】微信小程序订阅消息,后台SpringBoot实现

    消息能力是小程序能力中的重要组成,以便实现服务的闭环和更优的体验. 此前的小程序模板消息接口于2020年1月10日下线(我们开发者太难了-),2.10.0 版本开始,开发版和体验版小程序将禁止使用模板 ...

最新文章

  1. iOS架构-静态库.a之依赖第三方静态库.a的制作(8)
  2. Java中获取近七天的日期(包含今天)
  3. oracle中变量前加冒号_ORACLE 变量的定义和使用
  4. Express框架实现原理
  5. ubuntu下使用qemu模拟ARM-----uboot从sd卡启动内核
  6. 【英语学习】【Daily English】U09 Fashion L03 You're my fashion icon
  7. bootstrap 模态框无法使用_22 模态框Modal教程(plotly Dash Bootstrap版)
  8. java中的equals和hashCode
  9. R可视化:图片为背景的气泡地图
  10. Ms SQL2016 备份和还原
  11. 数学建模——五大类模型
  12. hive on spark 安装配置 详解
  13. HTML+CSS静态页面网页设计作业——咖啡网站pc端带轮播js (5页) 学生酒水网页作业, 生鲜水果网页作业成品, 零食小吃网页作 美食网页业模板
  14. C#:文本文件读写操作 FileHelper
  15. 鸿蒙电视应用beta,华为鸿蒙 2.0 开发者公测版 Beta 3 更新:增加三个鸿蒙应用
  16. 讲讲多拨的额外骚操作(多拨附加教程)
  17. Expected response code 250 but got code “501“, with messa php laravel 发邮件 smtp qq邮箱 阿里云
  18. 华为 android 菜单键,没有返回和菜单键!华为P10的Home键简单说明
  19. 如何高效的配置Nginx
  20. 数据结构课程设计:魔王语言解释

热门文章

  1. 2022-2028年中国骑行手套行业市场研究分析及投资前景规划报告
  2. 没见面,未说话,TA却在风雨里更懂你
  3. 基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(七)【权限架构生产者(数据字典)】
  4. 学画画应该需要学习哪些基础
  5. PS-InSAR大型机场变形监测
  6. 飘易关键字排名批量查询工具分享!
  7. MDX基本概念和语法
  8. 老人与海好词100英文带翻译_老人与海英文读后感100字
  9. MyCat入门篇-什么是MyCat
  10. 使用ganymed工具调用ssh2