java--微信小程序发送模板消息

简介: java--微信小程序发送模板消息
String appId = ""//小程序appId
String appSecret = "" //小程序秘钥
String url = "https://api.weixin.qq.com/cgi-bin/token?appid="+appId+"&secret="+appSecret+"&grant_type=client_credential"
RestTemplate restTemplate = new RestTemplate()
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class)
logger.info("responseEntity授权获取accessToken:"+responseEntity)
if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK){
   String sessionData = responseEntity.getBody()
   logger.info("sessionData = "+ sessionData)
   JSONObject jsonObj = JSON.parseObject(sessionData)
   String accessToken = jsonObj.getString("access_token")
//发送模板消息 到小程序进行数据封装
WxTemplate template = new WxTemplate()
template.touser = ""
 
Map<String,TemplateData> data = new HashMap<String,TemplateData>()
TemplateData  keyword1 = new TemplateData()
keyword1.value = ""
 
TemplateData  keyword2 = new TemplateData()
keyword2.value = ""
 
TemplateData  keyword3 = new TemplateData()
keyword3.value = ""
 
TemplateData  keyword4 = new TemplateData()
keyword4.value = ""
 
data.put("keyword1",keyword1)
data.put("keyword2",keyword2)
data.put("keyword3",keyword3)
data.put("keyword4",keyword4)
template.data = data
 
String json =  JSONObject.toJSONString(template)
logger.info("订单发送通知模板消息JSON数据:"+JsonUtils.toJson(template))
 
String ret = HttpClientUtil.sendPost(SEND_TEMPLATE_MESSAGE+accessToken, json)
MessageRes res = getObject(ret,MessageRes)
if("ok".equals(res.errmsg)){//发送成功
    //业务逻辑处理
}
logger.info("订单发送通知模板消息返回res:"+JSON.parseObject(ret))
}
WxTemplate 类:
class WxTemplate {
 
     String template_id;
 
     String touser;
 
     String form_id;//请自行添加上set,get方法
 
     String page;     
 
     Map<String,TemplateData> data;
   
}
TemplateData 类:
class TemplateData {
 
     String value;
     String color
 
}
/**
 * 字符串转对象
 * @param pojo
 * @param tclass
 * @return
 */
public static <T> T getObject(String pojo, Class<T> tclass) {
    try {
        return JSONObject.parseObject(pojo, tclass);
    } catch (Exception e) {
        e.printStackTrace()
    }
    return null;
}
MessageRes 类:
class MessageRes implements  Serializable{
 
    Integer errcode
 
    String errmsg
 
    String template_id
}
 
/**
 * 发送post请求 json格式
 * @param url
 * @param param
 * @return
 */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader ins = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("Accept", "text/html");
            conn.setRequestProperty("Content-Type", "text/html");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            ins = new BufferedReader(
                    new InputStreamReader(conn.getInputStream(), "utf-8"));
            String line;
            while ((line = ins.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (ins != null) {
                    ins.close();
                }
            }
            catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }
目录
相关文章
|
15天前
|
小程序 前端开发 算法
|
20天前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
|
21天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
29 6
|
1月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
60 1
|
1月前
|
Java
Java PDF模板生成PDF
Java PDF模板生成PDF
34 1
|
1月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
39 0
|
1月前
|
小程序 前端开发 Java
java 生成小程序二维码
java 生成小程序二维码
16 0
|
设计模式 Java
Java 模板设计模式的应用场景
模板设计模式在项目中的应用场景
164 0
|
设计模式 Java
java神秘的抽象类,模板设计模式
1.概述 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。 抽象类可以包含抽象方法和非抽象方法。 抽象类一般会被继承,由其子类实现具体的抽象方法👴🏻
105 0
|
设计模式 Java
JAVA 模板设计模式
JAVA 模板设计模式
125 0