자바 로 위 챗 템 플 릿 메 시 지 를 완벽 하 게 밀봉 하 는 전송 동 태 를 알려 드 립 니 다.

maven 의존 도 가 져 오기

<dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/jaxen/jaxen -->
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.15</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>
위 챗 템 플 릿 메시지 문서 보기
템 플 릿 메시지 보 내기 에 필요 한 json 데이터

{
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",  
           "miniprogram":{
             "appid":"xiaochengxuappid12345",
             "pagepath":"index?foo=bar"
           },          
           "data":{
                   "first": {
                       "value":"       !",
                       "color":"#173177"
                   },
                   "keyword1":{
                       "value":"   ",
                       "color":"#173177"
                   },
                   "keyword2": {
                       "value":"39.8 ",
                       "color":"#173177"
                   },
                   "keyword3": {
                       "value":"2014 9 22 ",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"      !",
                       "color":"#173177"
                   }
           }
       }
템 플 릿 인 스 턴 스
在这里插入图片描述
다양한 데이터 형식 을 포함 하고 json 데이터 형식 으로 인 터 페 이 스 를 요청 하면 템 플 릿 메 시 지 를 보 내 성공 효 과 를 보 낼 수 있 습 니 다.
在这里插入图片描述
first 의 value 에 대응 하 는 첫 번 째 부분 을 보 았 습 니 다.{first.DATA}자리 표시 자 데 이 터 를 채 워 야 합 니 다.color 에 대응 하 는 글꼴 의 색상 키 워드 는 하나 이상 을 포함 할 수 있 기 때문에 템 플 릿 의 메시지 에 따라 동적 으로 만들어 야 합 니 다.reark 마지막 데이터 채 우기
템 플 릿 메시지 에 사용 할 데이터 형식 에 대응 하 는 여섯 개의 실체 클래스 를 만 듭 니 다.
실체 클래스 코드
Remark
reark 의 데이터 와 색상 저장

package cn.xjt.wx.MessageEntity;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Remark {

    private String value;
    private String color;
}
Miniprogram//애플 릿 관련 데이터,애플 릿 이 없 으 면 채 우지 않 거나 빈 문자열 을 채 울 수 있 습 니 다.

package cn.xjt.wx.MessageEntity;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Miniprogram {

    private String appid;
    private String pagepath;

}
키워드,중간 키워드 부분

package cn.xjt.wx.MessageEntity;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Keyword {

    private String value;
    private String color;
}
First 첫 번 째 데이터

package cn.xjt.wx.MessageEntity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @author xu
 * @Description
 * @createTime 2021 04 02  17:02:00
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class First {

    private String value;
    private String color;

}
data 는 first,키워드,remark 를 포함 합 니 다.
keyword 가 고정 되 지 않 기 때문에 저 는 실체 류 에서 여러 개의 사용 을 제공 합 니 다.수요 에 따라 구조 에 필요 한 개수 입 니 다.

package cn.xjt.wx.MessageEntity;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.util.List;

@lombok.Data
@AllArgsConstructor
@NoArgsConstructor
public class data {

    private First first;

    private Keyword keyword1;
    private Keyword keyword2;
    private Keyword keyword3;
    private Keyword keyword4;
    private Keyword keyword5;
    private Remark remark;


    public data(First first,Remark remark,Keyword ... keyword){
        this.first=first;
        int count=1;
        for (Keyword keyword1 : keyword) {
            if (count==1){
                this.keyword1=keyword1;
            }else if (count==2){
                this.keyword2=keyword1;
            }else if (count==3){
                this.keyword3=keyword1;
            }else if (count==4){
                this.keyword4=keyword1;
            }else if (count==5){
                this.keyword5=keyword1;
            }
            count++;
        }
        this.remark=remark;
    }

}
JSonRootBean,실체 류 의 모든 데 이 터 를 통합 합 니 다.

package cn.xjt.wx.MessageEntity;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonRootBean {

    private String touser;
    private String template_id;
    private String url;
    private Miniprogram miniprogram;
    private data data;

}
실체 클래스 생 성 이 완료 되 었 기 때문에 템 플 릿 메 시 지 를 보 내야 할 때 우 리 는 하나의JsonRootBean대상 만 있 으 면 발송 을 완성 할 수 있 습 니 다.
데이터 실체 류 에 있 는 키 워드 는 다섯 개 밖 에 없 기 때문에 적용 되 는 템 플 릿 메시지 중 키 워드 는 최대 5 개 만 있 을 수 있 습 니 다.필요 에 따라 고려 하여 추가 할 수 있 습 니 다.
템 플 릿 메시지 보 내기 에 사용 할 도구 클래스
메시지 보 내기 도구 클래스

private static String grantType="client_credential";  

private static String appid="       appid";

private static String secret="       appsercet";

 public static Map<String,String> sendMessage2(String AccessToken, JsonRootBean jsonRootBean){
        JSONObject json = (JSONObject) JSON.parseObject(JSON.toJSONString(jsonRootBean));       // JsonRootBean  JSONObject  
        String info = HttpUtil.sendPostJson(json, "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + AccessToken);
        Map<String,String> map = (Map) JSON.parse(info);
        System.out.println(map);
        return map;
    }
(json 형식 데 이 터 를 가지 고 post 요청 도구 클래스 를 보 냅 니 다)다른 HttpUtil 도구 클래스 로 가 져 오 십시오.
HttpUtil 전송 post JSon 데이터 도구 류 전송 문 휴대
획득 accesstoken(accesstoken 유효기간 은 2 시간 입 니 다.만 료 후 다시 가 져 와 야 합 니 다)

public static Map<String,String> getAccessToken(){
        String s = HttpUtil.sendGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=" + grantType + "&appid=" + appid + "&secret=" + secret);
        Map<String,String> map = (Map) JSON.parse(s);
        System.out.println(map);
        return map;
    }
템 플 릿 사례 보 내기

Miniprogram miniprogram = new Miniprogram("", "");
		First first = new First("                ", "");
		Keyword[] keywords = new Keyword[5];
		Keyword keyword1 = new Keyword("    ", "#173177");
		Keyword keyword2 = new Keyword("    ", "#173177");
		Keyword keyword3 = new Keyword(LocalDateTime.now().toString(), "#173177");
		Keyword keyword4 = new Keyword("      ", "#173177");

		keywords[0] = keyword1;
		keywords[1] = keyword2;
		keywords[2] = keyword3;
		keywords[3] = keyword4;
		
		Remark remark = new Remark("       ", "");
//		data data = new data(first, remark, keyword1, keyword2, keyword3, keyword4);
		data data = new data(first, remark, keywords);
		JsonRootBean jsonRootBean = new JsonRootBean("     openid", "              id", "          (https://www.baidu.com/  )", miniprogram, data);
		WeiXinUtil.sendMessage2(WeiXinUtil.getAccessToken().get("access_token"), jsonRootBean);
효과.
在这里插入图片描述
발송 성공!!
전단 을 통 해 맵 데이터 형식의 인 자 를 받 아들 이 고 템 플 릿 메 시 지 를 보 내 는 방법 체 를 보 냅 니 다.👇👇

/**
     *           
     * @param param
     */
    public static Map<String,String> sendMessagetop(Map<String,Object> param){
        Map<String,String> res = new HashMap<>();
        String accessToken = WeiXinUtil.getAccessToken();		//         accesstoken
        Miniprogram miniprogram=null;
        String firstColor=null;
        String remarkColor=null;
        if (param.get("appid")!=null && param.get("pagepath")!=null){
            miniprogram = new Miniprogram(param.get("appid").toString(), param.get("pagepath").toString());		//  appid pagepath    ,      
        }
        String firstValue = param.get("firstValue").toString();		//  firstvalue
        if (param.get("firstColor")!=null){
            firstColor = param.get("firstColor").toString();		//       ,   
        }
        First first = new First(firstValue, firstColor);
        Integer keywordCount = Integer.valueOf(param.get("keywordCount").toString());		//     keyword
        Keyword[] keywords = new Keyword[5];
        for (int i=0;i<keywordCount;i++){		//    kewword
            Map kw = (Map) param.get(i+"");
            String color = null;
            if (kw.get("color")!=null){				//  key     value color
                color=kw.get("color").toString();		//  color   ,   
            }
            keywords[i]=new Keyword(kw.get("value").toString(), color);
        }
        String remarkValue = param.get("remarkValue").toString();
        if (param.get("remarkColor")!=null){
            remarkColor = param.get("remarkColor").toString();
        }
        Remark remark = new Remark(remarkValue, remarkColor);
        data data = new data(first, remark, keywords);		
        Map<String, Object> allOpenId = WeiXinUtil.getAllOpenId();		//          openid
        Map datas = (Map) allOpenId.get("data");
        List<String> openid = (List) datas.get("openid");//  openid  
        for (String o : openid) {		//          
            System.out.println(o);
            JsonRootBean jsonRootBean = new JsonRootBean(o, TEMPLATE_ID, URL, miniprogram, data);
            Map<String, String> result = WeiXinUtil.sendMessage2(accessToken, jsonRootBean);
            res.put("errmsg", result.get("errmsg"));
        }
        return res;
    }
이 공중 번 호 를 주목 한 모든 사용자 에 게 메 시 지 를 보 냈 습 니 다.
자바 로 위 챗 템 플 릿 메 시 지 를 완벽 하 게 밀봉 하 는 것 을 가 르 치 는 발송 동태 에 관 한 글 은 여기까지 입 니 다.자바 로 위 챗 메 시 지 를 밀봉 하 는 발송 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기