实现效果:html
下面要显示五个字段json
接下来,参照官方文档,一步步实现:小程序
1、官方给出请求示例、返回示例微信
2、根据上面编写实体类
url
(1)请求参数spa
@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,如实现效果所示,这是在小程序显示的五个字段.code
(属性名就要叫keyword一、二、3,不然推送的消息空白)orm
@Data public class DoctorReplyMsgData { private KeyNote keyword1; private KeyNote keyword2; private KeyNote keyword3; private KeyNote keyword4; private KeyNote keyword5; }
(3)上面五个字段对应的值(data是对象,因此须要这样)htm
@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; }
3、实现代码
public void sendTemplate() { SendTemplateReq sendTemplateReq = new SendTemplateReq(); //一、用户的 openid
sendTemplateReq.setTouser("openid"); //二、模板消息的id
sendTemplateReq.setTemplate_id("小程序启用模板的模板id"); //三、formid
sendTemplateReq.setForm_id("小程序传给后台的formid,七天有效"); //四、点击模板跳转页面
sendTemplateReq.setPage(""); //五、Data,按次序,只能叫keyword一、二、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); //如上...总共五个字段 //六、获取token
String token = "token,俩小时有效"; //七、模板url拼接上token,最上面的请求的url那样
String url = "TemplateUrl" + "token"; //八、请求体转为json
String reqStr=JsonUtil.ModelToGson(sendTemplateReq); //九、发送httpclient请求
String resultStr = httpRequestUtil.doPost(sb.toString(), reqStr); //十、接收返回的消息体:是否成功,成功返回0
SendTemplateResponse sendTemplateResponse = (SendTemplateResponse)JsonUtil.GsonToModel(resultStr,SendTemplateResponse.class); if(sendTemplateResponse.getErrcode() == 0){ //"推送成功!"
} }
一、openid:经过jsCode获取的
二、formid:小程序端传过来的
三、Template_id:小程序设置模板时带的
四、data:对象类型
五、token:调用接口获取token