微信公众平台创建模版
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 {@Beanpublic WxMpService wxMpService() {// 1. 配置公众号信息WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();// 替换成AppID和AppSecretconfig.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 {@Autowiredprivate 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 {@Autowiredprivate WxMpService wxMpService;public void sendServerAlert(List<String> userList, String errorMsg) {for (String openid : userList) {try {WxMpTemplateMessage templateMessage = buildTemplateMessage("E_PXClp9Usl91OhY模版ID", // Template IDopenid,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());}}}
}