100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Java微信公众号开发之发送微信模板消息

Java微信公众号开发之发送微信模板消息

时间:2023-09-10 10:29:31

相关推荐

Java微信公众号开发之发送微信模板消息

微信发送模板消息接口文档地址:https://mp./wiki?t=resource/res_main&id=mp1433751277

温馨提示:请各位开发者使用微信模板消息功能前,仔细阅读上述发送模板消息接口文档,少走弯路;

一、微信公众号开发框架

<!-- 微信框架 参考:/Wechat-Group/weixin-java-tools --><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.0.0</version></dependency>

二、发送模板消息效果

三、模板消息申请

为了保证用户不受到骚扰,在开发者出现需要主动提醒、通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板ID向用户主动推送提醒、通知消息。

模板消息调用时主要需要模板ID和模板中各参数的赋值内容。请注意:

1.模板中参数内容必须以".DATA"结尾,否则视为保留字;

2.模板保留符号"{{ }}"

1. 以下是我使用的模板消息

{{first.DATA}}用户名:{{keyword1.DATA}}订单号:{{keyword2.DATA}}订单金额:{{keyword3.DATA}}商品信息:{{keyword4.DATA}}{{remark.DATA}}

2. 发送模板消息POST数据示例

{

"touser":"OPENID",

"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",

"url":"/download",

"miniprogram":{

"appid":"xiaochengxuappid12345",

"pagepath":"index?foo=bar"

},

"data":{

"first": {

"value":"恭喜你支付成功!",

"color":"#173177"

},

"keynote1":{

"value":"曹",

"color":"#173177"

},

"keynote2": {

"value":"698571200",

"color":"#173177"

},

"keynote3": {

"value":"¥98.80",

"color":"#173177"

},

"keynote4":{

"value":"星冰乐(焦糖味) 家乐氏香甜玉米片*2 乐天七彩爱情糖*3",

"color":"#173177"

},

"remark":{

"value":"如有问题请致电xxx客服热线400-8070028或直接在微信留言,客服在线时间为工作日10:00-18:00,客服人员将第一时间为您服务。",

"color":"#173177"

}

}

}

详细参考:https://developers./doc/offiaccount/Message_Management/Template_Message_Interface.html

四、通过Postman测试发送模板消息

1. 登录微信公众平台,申请一个发送模板消息的模板

2. 通过微信公众平台接口调试工具获取AccessToken

3. Postman发送模板消息

上面需要填入的有openid、template_id

{"touser":"oJIGa0Xlgv1nAtrWLWMlB75ekNDs","template_id":"KIe4rXP3pRvX8BUnomZtCOFjZkSRzFdOzcJOob_9MR4","url":"/thinkingcao", "data":{"first": {"value":"矿泉水","color":"#173177"},"keyword1":{"value":"11111111","color":"#173177"},"keyword2": {"value":"123456789","color":"#173177"},"keyword3": {"value":"39.8元","color":"#173177"},"keyword4": {"value":"9月22日","color":"#173177"},"remark":{"value":"欢迎再次购买!","color":"#173177"}}}

通过Postman发送玩了之后就是步骤三中的效果图

五、发送模板消息工具类封装

配置微信公众号参数:appid、appsecret、token、asekey、template_id(模板id)

1.wx.properties

#=========微信公众号开发基本配置============#微信公众号的appidwx_appid=#微信公众号的appsecretwx_appsecret=#微信公众号的tokenwx_token=#微信公众号的消息加解密密钥aeskeywx_aeskey=#微信模板消息template_idwx_template_id=

2.WeChatTemplateMsgUtils:

这里将WeChatTemplateMsgUtils.java以注册为Spring容器,交给Spring容器管理,方便Controller、Service中注入使用

package com.thinkgem.jeesite.monUtil;import com.thinkgem.jeesite.modules.wechat.inter.PushMessageService;import lombok.extern.slf4j.Slf4j;import me.mon.exception.WxErrorException;import me.chanjar.weixin.mp.api.WxMpService;import me.chanjar.weixin.mp.bean.template.WxMpTemplate;import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.ponent;import java.util.Arrays;import java.util.List;/*** <pre>* @Description: 微信模板消息推送实现* @Aouth: cao_wencao* @Date: -01-24 14:07* </pre>*/@Slf4j@Componentpublic class WeChatTemplateMsgUtils implements PushMessageService {@Autowiredprivate WxMpService wxMpService;@Value("#{wxProperties.wx_template_id}")private String wx_template_id;//案例: 星巴克支付通知@Overridepublic String manuscriptExamine(String openId) {//实例化模板对象WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();//设置模板IDwxMpTemplateMessage.setTemplateId(wx_template_id);//设置发送给哪个用户wxMpTemplateMessage.setToUser(openId);//构建消息格式List<WxMpTemplateData> listData = Arrays.asList(new WxMpTemplateData("first", "恭喜你支付成功!", "#173177"),new WxMpTemplateData("keyword1", "曹.", "#173177"),new WxMpTemplateData("keyword2", "698571200", "#173177"),new WxMpTemplateData("keyword3", "¥98.80", "#173177"),new WxMpTemplateData("keyword4", "星冰乐(焦糖味) 家乐氏香甜玉米片*2 乐天七彩爱情糖*3", "#173177"),new WxMpTemplateData("remark", "如有疑问,请联系客服电话:021-54145323", "#173177"));//接收发送模板消息结果,就是msgid,if(msgid! = null)即成功String wxTemplateResult = null;//放进模板对象。准备发送wxMpTemplateMessage.setData(listData);try {//发送模板wxTemplateResult = wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);} catch (WxErrorException e) {log.error("发送模板消息异常:{}", e.getMessage());e.printStackTrace();}return wxTemplateResult;}/*** <pre>* 设置所属行业* @auther: cao_wencao* @date: /2/18 15:17* </pre>*/public boolean setIndustry(WxMpTemplateIndustry wxMpIndustry) throws WxErrorException {Boolean flag = wxMpService.getTemplateMsgService().setIndustry(wxMpIndustry);return flag;}/*** <pre>* 获取设置的行业信息* @auther: cao_wencao* @date: /2/18 15:21* </pre>*/public WxMpTemplateIndustry getIndustry() throws WxErrorException {WxMpTemplateIndustry wxMpTemplateIndustry = wxMpService.getTemplateMsgService().getIndustry();return wxMpTemplateIndustry;}/*** <pre>* 发送模板消息* @auther: cao_wencao* @date: /2/18 15:25* </pre>*/public String sendTemplateMsg(WxMpTemplateMessage templateMessage) throws WxErrorException {String result = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);return result;}/*** <pre>* 获得模板ID* shortTemplateId: 模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式* @auther: cao_wencao* @date: /2/18 15:29* </pre>*/public String addTemplate(String shortTemplateId) throws WxErrorException {String result = wxMpService.getTemplateMsgService().addTemplate(shortTemplateId);return result;}/*** <pre>* 获得模板列表* @auther: cao_wencao* @date: /2/18 15:30* </pre>*/List<WxMpTemplate> getAllPrivateTemplate() throws WxErrorException {List<WxMpTemplate> templateList = wxMpService.getTemplateMsgService().getAllPrivateTemplate();return templateList;}/*** <pre>* 删除模板* templateId: 公众帐号下模板消息ID* @auther: cao_wencao* @date: /2/18 15:32* </pre>*/boolean delPrivateTemplate(String templateId) throws WxErrorException {Boolean flag = wxMpService.getTemplateMsgService().delPrivateTemplate(templateId);return flag;}}

六、如何使用模板消息工具类

新建一个controller,在controller中注入WeChatTemplateMsgUtils即可

@Autowired

privateWeChatTemplateMsgUtilsweChatTemplateMsgUtils;

七、WxMpService注入为空问题

首先,我在专栏首页里也说明过,本微信开发专栏是全部基于开源微信框架WxJava(原名:weixin-java-tools)来实现的一些功能,所以大家应该先去熟悉下WxJava如何使用以及其demo项目如何运行,在这篇文章推出后,发现很多评论说WxMpService注入为空,其实这是缺少配置文件的问题,demo里面就有,下面说下具体缺少项,以及针对SpringMVC项目和SpringBoot项目应该配置哪些东西;

1. SpringMVC项目

如果是SpringMVC项目,WxMpService注入为空可能是缺少图中的配置文件,加入这两项配置即可,具体参考demo项目:/binarywang/weixin-java-mp-demo-springmvc

2.SpringBoot项目

如果是SpringBoot项目,WxMpService注入为空可能是缺少图中的配置文件,加入这两项配置即可,具体参考demo项目:/binarywang/weixin-java-mp-demo-springboot

上面就是针对针对SpringMVC架构和SpringBoot架构的项目,在使用微信模板消息时,注入WxMpService为空的各自问题及解决方案,在这里记录下,方便大家出现这种问题时看到就知道是什么原因,其实不是bug,自己多细心点就好了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。