实现效果:

下面要显示五个字段

接下来,参照官方文档,一步步实现:

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() == ){
//"推送成功!"
}
}

1、openid:通过jsCode获取的

2、formid:小程序端传过来的

3、Template_id:小程序设置模板时带的

4、data:对象类型

5、token:调用接口获取token

Java实现 微信小程序 + 消息推送的更多相关文章

  1. 微信小程序--消息推送配置Token令牌错误校验失败如何解决

    微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...

  2. 微信小程序消息推送,前端操作

    <form bindsubmit="getFormId" report-submit="true"> <button form-type=&q ...

  3. Java企业微信开发_05_消息推送之发送消息(主动)

    一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接 ...

  4. Java企业微信开发_04_消息推送之发送消息(主动)

    源码请见: Java企业微信开发_00_源码及资源汇总贴 一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息 ...

  5. Java企业微信开发_05_消息推送之被动回复消息

    一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip      ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...

  6. Java 后端微信小程序支付demo (网上说的坑里面基本上都有)

    Java 后端微信小程序支付 一.遇到的问题 1. 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试 2.签名错误 3.已经调起微信统一下单接口,可以拿到预支付ID,但是前端支付的时候 ...

  7. 微信小程序消息通知-打卡考勤

    微信小程序消息通知-打卡考勤 效果: 稍微改一下js就行,有不必要的错误,我就不改了,哈哈! index.js //index.js const app = getApp() // 填写微信小程序ap ...

  8. .NET CORE 微信小程序消息验证的坑

    进入微信小程序,点击开发->选择消息推送->扫码授权,填写必要参数 进入接口开发: /// <summary> /// 验证小程序 /// </summary> / ...

  9. Java实现微信小程序支付(准备)

    Java语言开发微信小程序支付功能: 1.通过https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1路径到官方下载Java的支付SD ...

随机推荐

  1. Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version)

    Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) N个盒子,每个盒子有a[i]块巧克力,每次操作可以将盒子中的 ...

  2. win10和linux引导问题(没有系统选择界面)

    由于最近学习嵌入式和c模块化编程,需要使用Linux系统,但是编程之外,WIN10还是主力系统,决定装双系统. 往常一样,百度装双系统方法,网上千篇一律,大都一个套路. 首先,WIN10 下,新开一个 ...

  3. datetime,Timestamp和datetime64之间转换

    引入工具包 import datetime import numpy as np import pandas as pd 总览 from IPython.display import Image fr ...

  4. 1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query

    mysql主从库同步错误:1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on querymysql主从库在同步时会发生1062 La ...

  5. Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest

    Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) 把commons-ileu ...

  6. 入门平衡树: Treap

    入门平衡树:\(treap\) 前言: 如有任何错误和其他问题,请联系我 微信/QQ同号:615863087 前置知识: 二叉树基础知识,即简单的图论知识. 初识\(BST\): \(BST\)是\( ...

  7. blockstack与Ethereum

    https://github.com/blockstack https://bihu.com/article/1260288 blockstack是用户登录的认证中心,类似java中的OAuth2进行 ...

  8. Maven配置文件POM属性最全详解

    注:本文内容来源于: BlueKitty1210 <Maven配置文件POM属性最全详解> <project xmlns="http://maven.apache.org/ ...

  9. centos服务器升级nodejs, pm2

    突然抽风想升级服务器的nodejs版本,原服务器版本运行的8.x,而目前(2019年5月30日)nodejs官方最新版本已经更新到了12.x了,稳定版本也更新到了10.x. 然后就折腾了一把去升级服务 ...

  10. SpringBoot:使用feign调用restful服务时地址栏传参

    1.服务提供者(controller层) @GetMapping("/user/{id}") public ApiResult getById(@PathVariable(&quo ...