微信消息模版推送
微信公众平台创建模版
https://mp.weixin.qq.com/
先查看APPID和AppSecret

创建模版获取模版ID及相关参数

代码
pom.xml
<!-- 微信公众号消息推送 -->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>4.6.0</version> <!-- 最新稳定版 -->
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-common</artifactId>
<version>4.6.0</version> <!-- 确保版本一致 -->
</dependency>
WXConfig.java配置类
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 微信公众号配置类
*/
@Configuration
public class WXConfig {
@Bean
public WxMpService wxMpService() {
// 1. 配置公众号信息
WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
// 替换成AppID和AppSecret
config.setAppId("AppID");
config.setSecret("AppSecret");
WxMpService wxService = new WxMpServiceImpl();
wxService.setWxMpConfigStorage(config);
return wxService;
}
}
AbstractWXTemplateService模版消息抽象类
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
/**
* 微信公众号通知模版抽象类
*/
public abstract class AbstractWXTemplateService {
/**
* 用指定的参数构建WxMpTemplateMessage对象
* @param templateId 模版id
* @param openid 用户openid
* @param url 点击模版消息跳转的链接
* @param data 模版数据
* @return
*/
protected WxMpTemplateMessage buildTemplateMessage(String templateId, String openid, String url, WxMpTemplateData... data) {
return WxMpTemplateMessage.builder()
.toUser(openid)
.templateId(templateId)
.url(url)
.data(Arrays.asList(data))
.build();
}
protected String getCurrentTimestamp() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
}
消息发送实现类
实现类1(对应一个模版消息)
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class WXLoginAuthNoticeImpl extends AbstractWXTemplateService {
@Autowired
private WxMpService wxMpService;
public void sendLoginNotification(List<String> userList, String accountName, String loginIp) {
for (String openid : userList) {
try {
WxMpTemplateMessage templateMessage = buildTemplateMessage(
"模版ID",
openid,
"http://callbackurl" + accountName,
new WxMpTemplateData("time1", getCurrentTimestamp(), "#173177"),
new WxMpTemplateData("thing2", accountName, "#173177"),
new WxMpTemplateData("character_string3", loginIp, "#173177")
);
String msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
System.out.println("Message sent successfully, OpenID=" + openid + ", MsgID=" + msgId);
} catch (Exception e) {
System.err.println("Message sending failed, OpenID=" + openid + ", Error: " + e.getMessage());
}
}
}
}
实现类2(对应另一个模版消息)
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class WXAlarmMsgImpl extends AbstractWXTemplateService {
@Autowired
private WxMpService wxMpService;
public void sendServerAlert(List<String> userList, String errorMsg) {
for (String openid : userList) {
try {
WxMpTemplateMessage templateMessage = buildTemplateMessage(
"E_PXClp9Usl91OhY模版ID", // Template ID
openid,
null,
new WxMpTemplateData("first", "Server Offline Alert", "#FF0000"),
new WxMpTemplateData("keyword1", errorMsg, "#173177"),
new WxMpTemplateData("keyword2", getCurrentTimestamp(), "#173177"),
new WxMpTemplateData("remark", "Please handle it as soon as possible!", "#FF0000")
);
String msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
System.out.println("Message sent successfully, OpenID=" + openid + ", MsgID=" + msgId);
} catch (Exception e) {
System.err.println("Message sending failed, OpenID=" + openid + ", Error: " + e.getMessage());
}
}
}
}
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~


浙公网安备 33010602011771号