【微信】 小程序 推送模板消息 (java)
大致流程图:
收集form_id
有时我们需要A用户操作后对B用户推送模板消息这是就需要前台收集form_id以便保存用直接用来做推送(有效期详见微信api),由前台收集后台将数据存入数据库,以便将来使用
String formid = getPara("form_id");
WeixinUser weixinUser = getweixinUser();
if (weixinUser==null) {fail("存储失败,用户未登录");return;
}
String[] split = formid.split(",");
for (int i = 0; i < split.length; i++) {WeixinTemplate weixinTemplate = new WeixinTemplate();weixinTemplate.setOpenId(weixinUser.getOpenid());weixinTemplate.setCreateTime(new Date());weixinTemplate.setFormId(split[i]);weixinTemplate.setStatus(true);weixinTemplate.save();
}
success("保存成功");
获取token
private static final String APPID = "XXXXXXX";private static final String SECRET = "XXXXXX";private static final String ACCESS_TOKEN = "weixinAPP:access_token";/*** 获取access_token*/public static String getAccess_Token(){String access_token = CacheUtils.get(ACCESS_TOKEN);if(access_token==null){String post = HttpKit.post("https://api.weixin.qq.com/cgi-bin/token?appid="+APPID+"&secret="+SECRET+"&grant_type=client_credential","");JSONObject jsonObject = (JSONObject)JSON.parse(post);access_token = (String)jsonObject.get("access_token");CacheUtils.set(ACCESS_TOKEN, access_token, 60*60*2);}return access_token;
}
编辑消息模板
根据微信API https://developers.weixin.qq.com/miniprogram/dev/api/notice.html#%E6%A8%A1%E7%89%88%E6%B6%88%E6%81%AF%E7%AE%A1%E7%90%86中的发送模板数据所需要的参数来创建实体类
public class WeiXinTeamplateMsg implements Serializable{private static final long serialVersionUID = 8038149984818112449L;private String touser; //接收者的openIdprivate String template_id; //模板idprivate String form_id; private TemplateItem data; //数据private String page; //跳转链接public String getPage() {return page;}public void setPage(String page) {this.page = page;}public static WeiXinTeamplateMsg New() {return new WeiXinTeamplateMsg();}private WeiXinTeamplateMsg() {this.data = new TemplateItem();}public String getTouser() {return touser;}public WeiXinTeamplateMsg setTouser(String touser) {this.touser = touser;return this;}public String getTemplate_id() {return template_id;}public WeiXinTeamplateMsg setTemplate_id(String template_id) {this.template_id = template_id;return this;}public String getForm_id() {return form_id;}public WeiXinTeamplateMsg setForm_id(String url) {this.form_id = url;return this;}public TemplateItem getData() {return data;}public WeiXinTeamplateMsg add(String key, String value, String color){data.put(key, new Item(value, color));return this;}public WeiXinTeamplateMsg add(String key, String value){data.put(key, new Item(value));return this;}public String build() {return JsonUtils.toJson(this);}public class TemplateItem extends HashMap {private static final long serialVersionUID = -3728490424738325020L;public TemplateItem() {}public TemplateItem(String key, Item item) {this.put(key, item);}}public class Item {private Object value;private String color;public Object getValue() {return value;}public void setValue(Object value) {this.value = value;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public Item(Object value) {this(value, "#999");}public Item(Object value, String color) {this.value = value;this.color = color;}}
}
发送拼接数据的数据
public static JSONObject sendWXTemplateMsg(WeiXinTeamplateMsg templateData){String json = templateData.build();String post = HttpKit.post("https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token="+getAccess_Token(), json);return JSONObject.parseObject(post);
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
