微信开发 --- 根据openid发送指定模板消息

必须关注公众号才能发送模板消息

一 模板消息的优缺点

优点:显示形式有别于其他消息,信息通俗易懂且要美观一些是一种通知类消息,可以主动给用户发送,用户只需关注公众号不需要和公众号有交互;可根据行业的不同发送个性化消息

缺点:消息内容固定,不能进行过多的定制化

二 使用条件

已经通过微信认证的公众号并且已经申请开通过模板消息接口,而且还需要从模板库中选择过模板并已添加到自己的公众平台


我的是测试号没什么区别
在这里插入图片描述

三 程序调用模板消息发送接口

1 模板消息由于模板选取不同需要传入参数的名称、值、参数个数也不同首先要封装2个实体

package com.xxx.pojo;
public class TemplateParam {
	// 参数名称
	private String name;
	// 参数值
	private String value;
	// 颜色
	private String color;
	
    public TemplateParam(String name,String value,String color){
    	this.name=name;
    	this.value=value;
    	this.color=color;
    }
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
}

package com.xxx.pojo;
 
import java.util.List;
 
public class Template {
 
	// 消息接收方
	private String toUser;
	// 模板id
	private String templateId;
	// 模板消息详情链接
	private String url;
	// 消息顶部的颜色
	private String topColor;
	// 参数列表
	private List<TemplateParam> templateParamList;
 
	public String getToUser() {
		return toUser;
	}
 
	public void setToUser(String toUser) {
		this.toUser = toUser;
	}
 
	public String getTemplateId() {
		return templateId;
	}
 
	public void setTemplateId(String templateId) {
		this.templateId = templateId;
	}
 
	public String getUrl() {
		return url;
	}
 
	public void setUrl(String url) {
		this.url = url;
	}
 
	public String getTopColor() {
		return topColor;
	}
 
	public void setTopColor(String topColor) {
		this.topColor = topColor;
	}
	
	public String toJSON() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("{");
		buffer.append(String.format("\"touser\":\"%s\"", this.toUser)).append(",");
		buffer.append(String.format("\"template_id\":\"%s\"", this.templateId)).append(",");
		buffer.append(String.format("\"url\":\"%s\"", this.url)).append(",");
		buffer.append(String.format("\"topcolor\":\"%s\"", this.topColor)).append(",");
		buffer.append("\"data\":{");
		TemplateParam param = null;
		for (int i = 0; i < this.templateParamList.size(); i++) {
		     param = templateParamList.get(i);
		    // 判断是否追加逗号
			if (i < this.templateParamList.size() - 1){
				
				buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"},", param.getName(), param.getValue(), param.getColor()));
			}else{
				buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"}", param.getName(), param.getValue(), param.getColor()));
			}
		
		}
		buffer.append("}");
		buffer.append("}");
		return buffer.toString();
		}
 
	public List<TemplateParam> getTemplateParamList() {
		return templateParamList;
	}
 
	public void setTemplateParamList(List<TemplateParam> templateParamList) {
		this.templateParamList = templateParamList;
	}
 
}

	//发送的模板id,颜色,用户的openid
	Template tem = new Template();
			tem.setTemplateId("UWVaWrD5pNUvFniKgtCPpzz2wxoRSVHY1tDsvFeSo7I");
			tem.setTopColor("#00DD00");
			tem.setToUser("oB8v_wnIzMfTRUZNtEy8zzD8UXko"); /* oB8v_wnIzMfTRUZNtEy8zzD8UXko */
			tem.setUrl("");

			List<TemplateParam> paras = new ArrayList<TemplateParam>();
			paras.add(new TemplateParam("keyword1", "访客消息提醒", "#3b3836"));
			paras.add(new TemplateParam("keyword2", "\\r\\n姓名:" + enrollmentTeacher.getName()+"\\r\\n手机号:" + enrollmentTeacher.getPhone()+"\\r\\n内容:" + Content, "#3b3836"));
			tem.setTemplateParamList(paras);
			sendTemplateMsg(weiXinUtils.getAccessToken(), tem);

真正发送模板的方法

public static boolean sendTemplateMsg(String token,Template template){
		
		boolean flag=false;
		
		String requestUrl="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
		requestUrl=requestUrl.replace("ACCESS_TOKEN", token);
	
		JSONObject jsonResult=CommonUtil.httpsRequest(requestUrl, "POST", template.toJSON());
		if(jsonResult!=null){
			int errorCode=jsonResult.getInt("errcode");
			String errorMessage=jsonResult.getString("errmsg");
			if(errorCode==0){
				flag=true;
			}else{
				System.out.println("模板消息发送失败:"+errorCode+","+errorMessage);
				flag=false;
			}
		}
		return flag;
}

猜你喜欢

转载自blog.csdn.net/weixin_41695965/article/details/84189343
今日推荐