利用测试号实现微信配置模板消息的推送(SDK版)
具体开发流程如下:
2.添加模板消息
{
{first.DATA}}
商家名称:{
{keyword1.DATA}}
商家电话:{
{keyword2.DATA}}
订单号:{
{keyword3.DATA}}
状态:{
{keyword4.DATA}}
总价:{
{keyword5.DATA}}
{
{remark.DATA}}
<!--wx SDK依赖-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>2.8.0</version>
</dependency>
4.设计接口。为什么需要设计接口呢?因为我们需要把模里面的参数一一传入,实现不同订单对应不同的消息。在发送消息的模板的时候是使用SDK中的wxMpService.getTemplateMsgService().sendTemplateMsg()这个接口,而参数就是WxMpTemplateMessag对象,在这个对象中可以将模板消息塞进去,最后直接发送此对象就行。本文的模板ID是放在配置文件中的,因此注入的配置文件类WechartAccountConfig
5.根据业务将模板中的信息动态的传入,然后调发送消息的Service,至此完成了消息的发送。最后在业务需求的地方直接调用此接口就可以完成一次消息的推送。具体实现如下代码:
@Slf4j
@Service
public class PushMessageServiceimpl implements PushMessageService {
@Autowired
private WxMpService wxMpService;
@Autowired
private WechartAccountConfig wechartAccountConfig;
@Override
public void orderStatus(OrderDto orderDto) {
//调用SDK发送消息
WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();
wxMpTemplateMessage.setTemplateId(wechartAccountConfig.getTemplateId().get("orderStatus"));
wxMpTemplateMessage.setToUser("o6oCR0ZptF_U1lkn1LgIST5o-Wwk");
List<WxMpTemplateData> data = Arrays.asList(
new WxMpTemplateData("first","亲,记得收货哦!"),
new WxMpTemplateData("keyword1","湖北xx学院"),
new WxMpTemplateData("keyword2","11111111111"),
new WxMpTemplateData("keyword3",orderDto.getOrderId()),
new WxMpTemplateData("keyword4",orderDto.getOrderAmountEnum().getMessage()),
new WxMpTemplateData("keyword5","¥"+ orderDto.getOrderAmount()),
new WxMpTemplateData("remark","欢迎下次光临")
);
wxMpTemplateMessage.setData(data);
try {
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
} catch (WxErrorException e) {
log.error("【消息推送】发送失败"+e);
e.printStackTrace();
}
}
}
