这段时间在做项目的时候,甲方要求将之前的易班消息推送更换成微信公众号模板消息推送,所以本文就是记录一下使用模板消息的过程,
开发的时候我用的是微信的测试公众账号,但是实际的功能和企业的账号是一样的。
首先我们要知道,模板消息是什么?以下就是公众号模板消息,我们在生活中很多场景都会接触到它。
在进入了测试号的管理后台之后,我们可以在这里设置我们的模板消息的模板
首先我们要在公众平台中设置好我们的模板,然后 java 中根据模板信息来添加相应的内容。
我们创建一个名为WeChatNotify
的工具类,里面存放的是模板消息的设置内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| @Component public class WeChatNotify { @Autowired private IDictService ds; @Autowired private ParseUtil pu; @Autowired private JdrService js;
public String push(String openid,String map, Bxd bxd) { WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage(); wxStorage.setAppId("wxacc93d31c5dbd26f"); wxStorage.setSecret("f8c9e82b590ac71eb12e96f77cf65740"); WxMpService wxMpService = new WxMpServiceImpl(); wxMpService.setWxMpConfigStorage(wxStorage); WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() .toUser(openid) .templateId("-1pT4MrVw4asKamh0IQMF6c22Ih74dRjxqN8fwhjoQs") .url("https://www.cyc0819.top") .build();
String bxlb=pu.paraseBxlb(bxd.getBxlb()); templateMessage.addData(new WxMpTemplateData("map", map, "#173177")); templateMessage.addData(new WxMpTemplateData("type",bxlb, "#173177")); templateMessage.addData(new WxMpTemplateData("text", bxd.getXxdd()+bxd.getBxnr(), "#173177")); templateMessage.addData(new WxMpTemplateData("time", bxd.getYysj(), "#173177")); templateMessage.addData(new WxMpTemplateData("name", bxd.getSbr(), "#173177")); templateMessage.addData(new WxMpTemplateData("phone", bxd.getSbrsj(), "#173177")); try { wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage); return "推送成功"; } catch (Exception e) { System.out.println("推送失败:" + e.getMessage()); e.printStackTrace(); return "推送失败"; } }
public String selOpenid(String ybid){ String openid=js.selOpenidForYbid(ybid); if (openid == null){ return null; } return openid; } }
|
在这里,我们需要公众号的appid,appsecret
,以及接收人的openid
。
如何获取用户的 openid 可以看以下这篇文章。
给足所需要的消息,然后在要发送消息的地方调用即可
1 2 3 4 5 6 7
| public String zdpdWeChat(String eid, String bxlb,Bxd bxd){ String ybid=zdpd(eid,bxlb); String map=es.selxxwz(Integer.parseInt(eid)); wcn.push("OPENID",map,bxd); return ybid; }
|