wechat微信模板消息推送demo
程序员文章站
2022-05-21 09:31:01
...
先上一波微信的官方文档中对消息模板的推送
我这边其实是用第三方SDK实现的
那么先上依赖
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>2.7.0</version>
</dependency>
调用demo
下面是调用的一个简单demo,里面用到了消息模板,获得模板ID的过程可在微信公众平台后台完成.我这里没有商家资质,所以用了微信测试开发者平台里的测试模板,和真实的还是有差别的
实现的接口就一个方法,方法里的实体类是我自己定义的业务实体类,大家按照自己的参数传就行
package com.chan.wechatshop.service.impl;
import com.chan.wechatshop.config.WeChatAccountConfig;
import com.chan.wechatshop.dto.OrderDTO;
import com.chan.wechatshop.service.PushMessageService;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.exception.WxErrorException;
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.ArrayList;
import java.util.List;
@Service
@Slf4j
public class PushMessageServiceImpl implements PushMessageService {
@Autowired
private WxMpService wxMpService;
@Autowired
private WeChatAccountConfig weChatAccountConfig;
@Override
public void orderStatus(OrderDTO orderDTO) {
WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();
wxMpTemplateMessage.setToUser(orderDTO.getBuyerOpenid()); //接收消息用户的openid,是要这个应用的openid
wxMpTemplateMessage.setTemplateId(weChatAccountConfig.getTemplateId().get("orderStatus")); //具体用哪个消息模板,我这里把模板id配置到了yml,大家可以自己写死或者按照配置传
List<WxMpTemplateData> data = new ArrayList<WxMpTemplateData>(){{
add(new WxMpTemplateData("name","亲记得收货"));
add(new WxMpTemplateData("keyword1","微信点餐"));
add(new WxMpTemplateData("keyword2","131311"));
add(new WxMpTemplateData("keyword3",orderDTO.getOrderId()));
add(new WxMpTemplateData("keyword4",orderDTO.getOrderStatusEnumByCode().getMessage()));
add(new WxMpTemplateData("keyword5","¥" + orderDTO.getOrderAmount()));
add(new WxMpTemplateData("remark", "假装有个备注"));
}};
wxMpTemplateMessage.setData(data);
try {
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
} catch (WxErrorException e) {
e.printStackTrace();
log.error("[微信模板消息发送] 发送失败 , {}",e);
}
}
}
我这边上架资质,所以在微信开发者测试平台中创建模板,下面是模板id和格式demo
在微信开发者测试平台中创建模板,这里上一波测试平台url
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
下面是模板id和消息的结构
测试号这里格式都没了…正式的里面是有格式的,我这里格式化后展现一下
微信定义的模板格式
模板的格式是微信定义的
手机上收到的消息
手机上收到的消息是这样的