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;
    }
目录
相关文章
|
2天前
|
Java
Java PDF模板生成PDF
Java PDF模板生成PDF
10 1
|
2天前
|
小程序 前端开发 Java
java 生成小程序二维码
java 生成小程序二维码
8 0
|
2月前
|
小程序 Java
【aspose-words】Aspose.Words for Java模板语法详细剖析
本文通过详细分析Aspose.Words for Java模板语法,介绍了使用条件块、变量和动态合并表格单元格三个常用模板标签,并结合实际案例进行演示。通过这三个标签的实操,帮助读者更好地掌握Aspose.Words的使用技巧。此外,还提供了官方文档链接以便进一步学习。
102 0
【aspose-words】Aspose.Words for Java模板语法详细剖析
|
26天前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
29 0
|
2月前
|
Java
Java系列之 IDEA 为类 和 方法设置注解模板
这篇文章介绍了如何在IntelliJ IDEA中为类和方法设置注解模板,包括类模板的创建和应用,以及两种不同的方法注解模板的创建过程和实际效果展示,旨在提高代码的可读性和维护性。
|
1月前
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
477 0
|
2月前
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
|
3月前
|
存储 Java 应用服务中间件
Java中套路和实现问题之基于组合/模板的套路常见框架中的应用有什么
Java中套路和实现问题之基于组合/模板的套路常见框架中的应用有什么
|
2月前
|
JavaScript 前端开发 Java