Java实现 微信小程序 + 消息推送
发布时间:2022-09-08 10:15:25作者:顺晟科技点击:
实现效果:
下面要显示五个字段
接下来,参照官方文档,一步步实现:
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/template-message/templateMessage.send.html
一、官方给出请求示例、返回示例
二、根据上面编写实体类
(1)请求参数
@Data public class SendTemplateReq { /** * 接收者(用户)的 openid */ private String touser; /** * 所需下发的模板消息的id */ private String template_id; /** * 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。 * 该字段不填则模板无跳转。 */ private String page; /** * 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id */ private String form_id; /** * 模板内容 * 不填则下发空模板。具体格式请参考示例。 */ private DoctorReplyMsgData data; /** * 模板需要放大的关键词 * 不填则默认无放大 */ private String emphasis_keyword; }
(2)请求参数中的data,如实现效果所示,这是在小程序显示的五个字段.
(属性名就要叫keyword1、2、3,否则推送的消息空白)
@Data public class DoctorReplyMsgData { private KeyNote keyword1; private KeyNote keyword2; private KeyNote keyword3; private KeyNote keyword4; private KeyNote keyword5; }
(3)上面五个字段对应的值(data是对象,所以需要这样)
@Data public class KeyNote { private String value; }
(4)请求后,微信返回的消息体
@Data public class SendTemplateResponse { /** * 错误码 * 0 ok * 40037 template_id不正确 * 41028 form_id不正确,或者过期 * 41029 form_id已被使用 * 41030 page不正确 * 45009 接口调用超过限额(目前默认每个帐号日调用限额为100万) */ private int errcode; /** * 错误信息 */ private String errmsg; }
三、实现代码
public void sendTemplate() { SendTemplateReq sendTemplateReq = new SendTemplateReq(); //1、用户的 openid sendTemplateReq.setTouser("openid"); //2、模板消息的id sendTemplateReq.setTemplate_id("小程序启用模板的模板id"); //3、formid sendTemplateReq.setForm_id("小程序传给后台的formid,七天有效"); //4、点击模板跳转页面 sendTemplateReq.setPage(""); //5、Data,按次序,只能叫keyword1、2、3 DoctorReplyMsgData replyData = new DoctorReplyMsgData(); KeyNote keyword1 = new KeyNote(); keyword1.setValue("小程序显示的消息字段1"); replyData.setKeyword1(keyword1); KeyNote keyword2 = new KeyNote(); keyword2.setValue("小程序显示的消息字段2"); replyData.setKeyword2(keyword2); sendTemplateReq.setData(replyData); //如上...总共五个字段 //6、获取token String token = "token,俩小时有效"; //7、模板url拼接上token,最上面的请求的url那样 String url = "TemplateUrl" + "token"; //8、请求体转为json String reqStr=JsonUtil.ModelToGson(sendTemplateReq); //9、发送httpclient请求 String resultStr = httpRequestUtil.doPost(sb.toString(), reqStr); //10、接收返回的消息体:是否成功,成功返回0 SendTemplateResponse sendTemplateResponse = (SendTemplateResponse)JsonUtil.GsonToModel(resultStr,SendTemplateResponse.class); if(sendTemplateResponse.getErrcode() == 0){ //"推送成功!" } }
1、openid:通过jsCode获取的
2、formid:小程序端传过来的
3、Template_id:小程序设置模板时带的
4、data:对象类型
5、token:调用接口获取token
- 上一篇 : 微信小程序消息推送,前端操作
- 下一篇 : 微信小程序推送模板消息