wechat微信模板消息推送demo
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wechat微信模板消息推送demo相关的知识,希望对你有一定的参考价值。
先上一波微信的官方文档中对消息模板的推送
下面请求的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的主要内容,如果未能解决你的问题,请参考以下文章