자바 로 위 챗 템 플 릿 메 시 지 를 완벽 하 게 밀봉 하 는 전송 동 태 를 알려 드 립 니 다.
13118 단어 자바포장 하 다위 챗 푸 시 메시지위 챗 메시지
<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;
}
이 공중 번 호 를 주목 한 모든 사용자 에 게 메 시 지 를 보 냈 습 니 다.자바 로 위 챗 템 플 릿 메 시 지 를 완벽 하 게 밀봉 하 는 것 을 가 르 치 는 발송 동태 에 관 한 글 은 여기까지 입 니 다.자바 로 위 챗 메 시 지 를 밀봉 하 는 발송 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.