wechat微信模板消息推送demo

110 篇文章 2 订阅

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

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要一样
在这里插入图片描述
测试号这里格式都没了…正式的里面是有格式的,我这里格式化后展现一下
在这里插入图片描述

微信定义的模板格式

模板的格式是微信定义的
在这里插入图片描述

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

手机上收到的消息

手机上收到的消息是这样的
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值