微信模板消息推送(基于测试号)springboot
微信官方文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
1.申请测试号:这里可以参考https://blog.csdn.net/qq_37992974/article/details/88598502
测试号申请成功后,进入测试号页面
点击新增测试模板,里面的参数必须是{{参数.DATA}} 这里是固定写法
记录模板信息id
2.使用第三方sdk进行模板消息推送
第三方sdk 依赖
<dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>2.7.0</version> </dependency>
新建service 接口
package com.imooc.sell.service;
import com.imooc.sell.dataobject.OrderMaster;
import com.imooc.sell.dto.OrderMasterDTO;
/**
* @Author:
* @Date: 2019/3/21 19:56
* @Version 1.0
*/
public interface PushMessageService {
void templateOrderStatus(Object object);
}
其中object是业务求模板推送相关数据的封装类,可以根据实际的需求传递对象
新建接口实现类
/**
* @Author:
* @Date: 2019/3/21 19:58
* @Version 1.0
*/
@Service
@Slf4j
public class PushMessageServiceImpl implements PushMessageService {
@Autowired
WxMpService wxMpService;
@Autowired
WechatAccountConfig wechatAccountConfig;
@Override
public void templateOrderStatus(OrderMasterDTO orderMasterDTO) {
//模板消息封装的对象
WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();
wxMpTemplateMessage.setTemplateId("模板消息id");
wxMpTemplateMessage.setToUser("要发送的用户的openid");
List<WxMpTemplateData> wxMpTemplateData = Arrays.asList(
new WxMpTemplateData("first","订单完结"),
new WxMpTemplateData("keyword1","微信点餐快餐店"),
new WxMpTemplateData("keyword2","11111111"),
);
wxMpTemplateMessage.setData(wxMpTemplateData);
try {
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
}catch (WxErrorException errorException){
log.error("【微信模板消息推送】出现错误!" );
}
}
}
模板消息的id 是新建模板后微信会自动生成的模板消息id,在上面的截图中有
接收消息的人的openid 是关注了你的测试号里面显示的openid,我的测试号是这样的
每个测试号里面的同一个用户的openid是不一样的!
实现类里面的WxMpService,是需要配置自己的测试号的appid和appsercert的,关于配置,我在https://blog.csdn.net/qq_37992974/article/details/88599639 这个网页授权的前面有提到
这样功能就是实现了
注意: 项目必须是发布在外网上的,才能测试成功