利用测试号实现微信配置模板消息的推送(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();
        }
    }
}
经验分享 程序员 微信小程序 职场和发展