欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

wechat微信模板消息推送demo

程序员文章站 2022-05-21 09:31:01
...

先上一波微信的官方文档中对消息模板的推送

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

wechat微信模板消息推送demo

我这边其实是用第三方SDK实现的

那么先上依赖

<dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>2.7.0</version>
</dependency>

调用demo

下面是调用的一个简单demo,里面用到了消息模板,获得模板ID的过程可在微信公众平台后台完成.我这里没有商家资质,所以用了微信测试开发者平台里的测试模板,和真实的还是有差别的

实现的接口就一个方法,方法里的实体类是我自己定义的业务实体类,大家按照自己的参数传就行
wechat微信模板消息推送demo

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和消息的结构
wechat微信模板消息推送demo
测试号这里格式都没了…正式的里面是有格式的,我这里格式化后展现一下
wechat微信模板消息推送demo

微信定义的模板格式

模板的格式是微信定义的
wechat微信模板消息推送demo

手机上收到的消息

手机上收到的消息是这样的
wechat微信模板消息推送demo

相关标签: JAVA springboot