Java实现 微信小程序 + 消息推送
实现效果:
下面要显示五个字段

接下来,参照官方文档,一步步实现:
一、官方给出请求示例、返回示例


二、根据上面编写实体类
(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实现 微信小程序 + 消息推送的更多相关文章
- 微信小程序--消息推送配置Token令牌错误校验失败如何解决
微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...
- 微信小程序消息推送,前端操作
<form bindsubmit="getFormId" report-submit="true"> <button form-type=&q ...
- Java企业微信开发_05_消息推送之发送消息(主动)
一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接 ...
- Java企业微信开发_04_消息推送之发送消息(主动)
源码请见: Java企业微信开发_00_源码及资源汇总贴 一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息 ...
- Java企业微信开发_05_消息推送之被动回复消息
一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...
- Java 后端微信小程序支付demo (网上说的坑里面基本上都有)
Java 后端微信小程序支付 一.遇到的问题 1. 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试 2.签名错误 3.已经调起微信统一下单接口,可以拿到预支付ID,但是前端支付的时候 ...
- 微信小程序消息通知-打卡考勤
微信小程序消息通知-打卡考勤 效果: 稍微改一下js就行,有不必要的错误,我就不改了,哈哈! index.js //index.js const app = getApp() // 填写微信小程序ap ...
- .NET CORE 微信小程序消息验证的坑
进入微信小程序,点击开发->选择消息推送->扫码授权,填写必要参数 进入接口开发: /// <summary> /// 验证小程序 /// </summary> / ...
- Java实现微信小程序支付(准备)
Java语言开发微信小程序支付功能: 1.通过https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1路径到官方下载Java的支付SD ...
随机推荐
- 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]块巧克力,每次操作可以将盒子中的 ...
- win10和linux引导问题(没有系统选择界面)
由于最近学习嵌入式和c模块化编程,需要使用Linux系统,但是编程之外,WIN10还是主力系统,决定装双系统. 往常一样,百度装双系统方法,网上千篇一律,大都一个套路. 首先,WIN10 下,新开一个 ...
- datetime,Timestamp和datetime64之间转换
引入工具包 import datetime import numpy as np import pandas as pd 总览 from IPython.display import Image fr ...
- 1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query
mysql主从库同步错误:1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on querymysql主从库在同步时会发生1062 La ...
- Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest
Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) 把commons-ileu ...
- 入门平衡树: Treap
入门平衡树:\(treap\) 前言: 如有任何错误和其他问题,请联系我 微信/QQ同号:615863087 前置知识: 二叉树基础知识,即简单的图论知识. 初识\(BST\): \(BST\)是\( ...
- blockstack与Ethereum
https://github.com/blockstack https://bihu.com/article/1260288 blockstack是用户登录的认证中心,类似java中的OAuth2进行 ...
- Maven配置文件POM属性最全详解
注:本文内容来源于: BlueKitty1210 <Maven配置文件POM属性最全详解> <project xmlns="http://maven.apache.org/ ...
- centos服务器升级nodejs, pm2
突然抽风想升级服务器的nodejs版本,原服务器版本运行的8.x,而目前(2019年5月30日)nodejs官方最新版本已经更新到了12.x了,稳定版本也更新到了10.x. 然后就折腾了一把去升级服务 ...
- SpringBoot:使用feign调用restful服务时地址栏传参
1.服务提供者(controller层) @GetMapping("/user/{id}") public ApiResult getById(@PathVariable(&quo ...