java开发微信模板消息推送

海豚精灵https://mgo.whhtjl.com

看到这里时,我猜大家已在网上翻阅了各种资料,废话不多说,直接上重点,大家可以点击下列链接去官方查询资料。

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html

关于使用规则,请注意:

1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;

2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;

3、在所选择行业的模板库中选用已有的模板进行调用;

4、每个账号可以同时使用25个模板。

5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制,以公众号MP后台开发者中心页面中标明的数字为准。

关于接口文档,请注意:

1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;

2、模板中参数内容必须以".DATA"结尾,否则视为保留字;

3、模板保留符号"{ { }}"

重点上代码,我这里只举一个例子,如下:

我这里使用的weixin-java-mp,pom.xml文件如下:

<!--公众号(包括订阅号和服务号) -->
<dependency>
	<groupId>com.github.binarywang</groupId>
	<artifactId>weixin-java-mp</artifactId>
	<version>2.7.0</version>
</dependency>

配置文件代码如下:

#微信公众号
wx.mp.appId=XXXXXXXXXXXXXXXXX
wx.mp.appSecret=XXXXXXXXXXXXXXXXXXX

创建WeChatMpProperties实体类

package com.ltf.config;

import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 微信公众号商户基本信息
 * @author xhz
 *
 */
@Data
@Component
@ConfigurationProperties(prefix = "wx.mp")
public class WeChatMpProperties {

	/**
	 * appId
	 */
	private String appId;

	/**
	 * 公众平台密钥
	 */
	private String appSecret;

}

创建WxJsMpConfig

package com.ltf.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import me.chanjar.weixin.mp.api.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;

/**
 * 微信公众号信息注入bean中
 * @author xhz
 *
 */
@Component
public class WxJsMpConfig {

	@Autowired
	private WeChatMpProperties wxJsMpProperties;

	@Bean
	public WxMpService wxJsMpService( ){
		WxMpService wxJsMpService = new WxMpServiceImpl();
		wxJsMpService.setWxMpConfigStorage(wxMpConfigStorage());
		return wxJsMpService;
	}

	private WxMpConfigStorage wxMpConfigStorage(){
		WxMpInMemoryConfigStorage wxJsMpConfigStorage = new WxMpInMemoryConfigStorage();
		// 公众号appId
		wxJsMpConfigStorage.setAppId(this.wxJsMpProperties.getAppId());
		// 公众号appSecret
		wxJsMpConfigStorage.setSecret(this.wxJsMpProperties.getAppSecret());
		return wxJsMpConfigStorage;
	}

}

创建模板消息实体类

package com.ltf.entity;
import java.io.Serializable;
import lombok.Data;
/**
 * 微信消息模板实体类
 * @author xhz
 *
 */
@Data
public class WxMsgTemplate implements Serializable {

	private static final long serialVersionUID = 1L;
	private String openId;
	private String templateId;
	private String url;
	private String color;
	private String first;
	private String keyWord1;
	private String keyWord2;
	private String keyWord3;
	private String keyWord4;
	private String keyWord5;
	private String keyWord6;
	private String remark;

}

创建微信消息推送service层

package com.ltf.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ltf.entity.WxMsgTemplate;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;

/**
 * 微信消息推送
 * @author xhz
 *
 */
@Service
public class WxMsgPushService {

	private static final Logger logger = LoggerFactory
			.getLogger(WxMsgPushService.class);

	/**
	 * 微信公众号API的Service
	 */
	@Autowired
	private WxMpService wxJsMpService;

	/**
	 * 注册成功后发送微信模板消息
	 * @param wxMsgTemplate
	 * @return
	 */
	public Boolean sendWxMsgAfterSuccessRegister(WxMsgTemplate wxMsgTemplate) {
		String result=null;
		try {
			WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
					.toUser(wxMsgTemplate.getOpenId())//要推送的用户openId
					.templateId(wxMsgTemplate.getTemplateId())//模版id
					.url(wxMsgTemplate.getUrl())//点击模版消息要访问的网址
					.build();
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("first", wxMsgTemplate.getFirst(), wxMsgTemplate.getColor()));
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("keyword1", wxMsgTemplate.getKeyWord1(),  wxMsgTemplate.getColor()));
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("keyword2", wxMsgTemplate.getKeyWord2(),  wxMsgTemplate.getColor()));
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("remark", wxMsgTemplate.getRemark(), wxMsgTemplate.getColor()));
			result=wxJsMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
		} catch (Exception e) {
			logger.error("WxMsgPushService.sendWxMsgAfterSuccessRegister()----error", e);
		}
		return result!=null;
	}

}

创建测试类

public static void main(String[] args) {
WxMsgTemplate wxMsgTemplate=new WxMsgTemplate();
wxMsgTemplate.setOpenId("xxxxxxxxxxxxxxxxxxx");
wxMsgTemplate.setTemplateId(CacheConstans.TEMPLATEID_REGISTER);
wxMsgTemplate.setUrl(CacheConstans.URL);
wxMsgTemplate.setColor(CacheConstans.COLOR);
wxMsgTemplate.setFirst("XXXXXX注册通知");//详细内容
wxMsgTemplate.setKeyWord1("小盒子");//用户名
wxMsgTemplate.setKeyWord2(DateUtils.toString(new Date(), "yyyy-MM-dd HH:mm:ss"));//注册时间
wxMsgTemplate.setRemark("欢迎来到XXXXXX");
//给新用户推送消息
wxMsgPushService.sendWxMsgAfterSuccessRegister(wxMsgTemplate);
}

运行代码如下所示:

OK,下班回家啦啦啦啦啦啦!!!

猜你喜欢

转载自blog.csdn.net/qq_35393693/article/details/108284699