wechat微信模板消息推送demo

Posted 好大的月亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wechat微信模板消息推送demo相关的知识,希望对你有一定的参考价值。

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

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

下面请求的token是用的别人的…具体获取accesstoken大家可以参考微信官方文档
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

在我这里是通过自己注入bean,把借用的appid和appsecret在初始化的时候set进去,后面使用的都是这个WxService


WeChatAccountConfig展示demo

举个例子,网页授权获取accessToken

下面展示一下用wxService在微信授权登录的时候获取accessToken,虽然是根据回信返回的code获取accesstoken,但是大致逻辑一样,都是去请求微信的url然后获取返回的accessToken


言归正传,再回到这里微信消息模板这里,上面说明一个这个accessToekn

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

那么先上依赖

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

调用demo

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

实现的接口就一个方法,方法里的实体类是我自己定义的业务实体类,大家按照自己的参数传就行

下面代码demo的WxMpTemplateData里的key要和微信消息模板里设置的key要一样

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("first","亲记得收货"));
            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和消息的结构,代码demo的WxMpTemplateData里的key要和微信消息模板里设置的key要一样

测试号这里格式都没了…正式的里面是有格式的,我这里格式化后展现一下

微信定义的模板格式

模板的格式是微信定义的

我这里是测试号,很多和正式的不一样,正式要加入白名单,捞张图说明一下

手机上收到的消息

手机上收到的消息是这样的

以上是关于wechat微信模板消息推送demo的主要内容,如果未能解决你的问题,请参考以下文章

微信给关注公众号的用户推送模板消息

微信小程序之模板消息推送

夺命雷公狗---微信开发25----客服消息接口基础和推送语音

消息推送之微信模板消息

WeChat结合文档开发

微擎对接小程序消息推送不成功