Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage.java

ylbtech-Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage.java
1.返回顶部
1.1、
package com.ylbtech.common.utils.miniprogram;

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 模板消息
 * https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/template-message/templateMessage.addTemplate.html
 */
public class TemplateMessage {

    /**
     * 组合模板并添加至帐号下的个人模板库
     * @param access_token 接口调用凭证
     * @param id 模板标题id,可通过接口获取,也可登录小程序后台查看获取
     * @param keyword_id_list 开发者自行组合好的模板关键词列表,关键词顺序可以*搭配(例如[3,5,4]或[4,5,3]),最多支持10个关键词组合
     * @param restTemplate
     * @return
     */
    public static String addTemplate(String access_token, String id, List<Integer> keyword_id_list, RestTemplate restTemplate) {

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 防止中文乱码
        String url = "https://api.weixin.qq.com/cgi-bin/wxopen/template/add?access_token="+access_token;
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //请求体
        Map<String, Object> requestParam = new HashMap<>();
        requestParam.put("id", id);
        requestParam.put("keyword_id_list",keyword_id_list);

        //封装成一个请求对象
        HttpEntity entity = new HttpEntity(requestParam, headers);
        //发送数据方法
        ResponseEntity<String> forEntity = restTemplate.postForEntity(url, entity, String.class);

        //得到返回的数据body
        return forEntity.getBody();
    }

    /**
     * 删除帐号下的某个模板
     * @param access_token 接口调用凭证
     * @param template_id 要删除的模板id
     * @param restTemplate
     * @return
     */
    public static String deleteTemplate(String access_token, String template_id, RestTemplate restTemplate) {

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 防止中文乱码
        String url = "https://api.weixin.qq.com/cgi-bin/wxopen/template/del?access_token="+access_token;
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //请求体
        Map<String, Object> requestParam = new HashMap<>();
        requestParam.put("template_id", template_id);

        //封装成一个请求对象
        HttpEntity entity = new HttpEntity(requestParam, headers);
        //发送数据方法
        ResponseEntity<String> forEntity = restTemplate.postForEntity(url, entity, String.class);

        //得到返回的数据body
        return forEntity.getBody();
    }

    /**
     * 获取模板库某个模板标题下关键词库
     * @param access_token 接口调用凭证
     * @param id 模板标题id,可通过接口获取,也可登录小程序后台查看获取
     * @param restTemplate
     * @return
     */
    public static String getTemplateLibraryById(String access_token, String id, RestTemplate restTemplate) {

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 防止中文乱码
        String url = "https://api.weixin.qq.com/cgi-bin/wxopen/template/library/get?access_token="+access_token;
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //请求体
        Map<String, Object> requestParam = new HashMap<>();
        requestParam.put("id", id);

        //封装成一个请求对象
        HttpEntity entity = new HttpEntity(requestParam, headers);
        //发送数据方法
        ResponseEntity<String> forEntity = restTemplate.postForEntity(url, entity, String.class);

        //得到返回的数据body
        return forEntity.getBody();
    }

    /**
     * 获取小程序模板库标题列表
     * @param access_token 接口调用凭证
     * @param offset 用于分页,表示从offset开始。从 0 开始计数
     * @param count 用于分页,表示拉取count条记录。最大为 20
     * @param restTemplate
     * @return
     */
    public static String getTemplateLibraryList(String access_token, Integer offset, Integer count, RestTemplate restTemplate) {

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 防止中文乱码
        String url = "https://api.weixin.qq.com/cgi-bin/wxopen/template/library/list?access_token="+access_token;
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //请求体
        Map<String, Object> requestParam = new HashMap<>();
        requestParam.put("offset", offset);
        requestParam.put("count", count);

        //封装成一个请求对象
        HttpEntity entity = new HttpEntity(requestParam, headers);
        //发送数据方法
        ResponseEntity<String> forEntity = restTemplate.postForEntity(url, entity, String.class);

        //得到返回的数据body
        return forEntity.getBody();
    }

    /**
     * 发送模板消息
     * @param access_token 接口调用凭证
     * @param touser 接收者(用户)的 openid
     * @param template_id 所需下发的模板消息的id
     * @param form_id 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
     * @param restTemplate
     * @return
     */
    public static String send(String access_token,String touser, String template_id, String form_id, RestTemplate restTemplate) {

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 防止中文乱码
        String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token="+access_token;
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //请求体
        Map<String, Object> requestParam = new HashMap<>();
        requestParam.put("touser", touser);
        requestParam.put("template_id", template_id);
        //requestParam.put("page", "index");
        requestParam.put("form_id", form_id);
        //requestParam.put("data", "");
        //requestParam.put("emphasis_keyword", "");

        //封装成一个请求对象
        HttpEntity entity = new HttpEntity(requestParam, headers);
        //发送数据方法
        ResponseEntity<String> forEntity = restTemplate.postForEntity(url, entity, String.class);

        //得到返回的数据body
        return forEntity.getBody();
    }
}
1.2、
2.返回顶部
 
3.返回顶部
 
4.返回顶部
 
5.返回顶部
 
 
6.返回顶部
 
Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage.java 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。