微信模板消息发送实例
程序员文章站
2024-03-15 14:18:41
...
微信公众号-服务号或者测试号等可以申请高级接口,本例子是以测试号为基础来写。
测试号中,模版内容可以自定义,别的号是微信官方定义好的,不可以修改,订阅号申请不到该接口。
首先定义两个实体类(完成的实体类)
package com.gg.wx.pojo;
import java.util.ArrayList;
import java.util.List;
import com.gg.wx.util.CommonUtil;
import com.gg.wx.util.ConstantsActionGo;
/**
* 模板消息实体类
* */
public class Template {
// 消息接收方
private String toUser;
// 模板id
private String templateId;
// 模板消息详情链接
private String url;
// 消息顶部的颜色
private String topColor;
// 参数列表
private List<TemplateParam> templateParamList;
//url 为微信公众号token和模板ID
public Template(String ToUser,List<TemplateParam> paras,String type,String name){
this.toUser = ToUser;
this.templateId = ConstantsActionGo.TEMPLATE_ID;//消息模板ID
this.templateParamList = paras;
}
public String getToUser() {
return toUser;
}
public String getTemplateId() {
return templateId;
}
public String getUrl() {
return url;
}
public String getTopColor() {
return topColor;
}
public void setTopColor(String topColor) {
this.topColor = topColor;
}
public List<TemplateParam> getTemplateParamList() {
return templateParamList;
}
}
package com.gg.wx.pojo;
public class TemplateParam {
// 参数名称
private String name;
// 参数值
private String value;
// 颜色
private String 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;
}
public TemplateParam(String name,String value,String color){
this.name=name;
this.value=value;
this.color=color;
}
}
下面就是调用微信模板消息的方法,可以先去微信公众号开发官方网站看一下模板消息开发
package com.gg.wx.util;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
import com.gg.wx.pojo.Template;
import com.gg.wx.pojo.TemplateParam;
public class TempletUtil {
public static boolean sendTemplateMsg(Template template){
boolean flag=false;
//url 为模板消息请求接口 和 微信token拼接
String url = ConstantsActionGo.TEMPLATE_API + CommonUtil.getToken(ConstantsActionGo.WECHAT_ACTIONGO_APPID,
ConstantsActionGo.WECHAT_ACTIONGO_APPSECRET).getAccessToken();
JSONObject jsonResult=CommonUtil.httpsRequest(url, "POST", toJSON(template));
if(jsonResult!=null){
int errorCode=jsonResult.getInt("errcode");
String errorMessage=jsonResult.getString("errmsg");
if(errorCode==0){
flag=true;
System.out.println("模板消息发送成功");
}else{
System.out.println("模板消息发送失败:"+errorCode+","+errorMessage);
flag=false;
}
}
return flag;
}
public static void Template(String ToUser,String type,String name) {
List<TemplateParam> paras=new ArrayList<TemplateParam>();
paras.add(new TemplateParam("first","您好,你有新的"+type,"#FF3333"));
paras.add(new TemplateParam("keyword1",name,"#0044BB"));
paras.add(new TemplateParam("keyword2",type,"#0044BB"));
paras.add(new TemplateParam("remark","请尽快处理!","#0044BB"));
Template tem = new Template(ToUser,paras,type,name);
boolean result=sendTemplateMsg(tem);
System.out.println("調用成功");
}
public static String toJSON(Template template) {
StringBuffer buffer = new StringBuffer();
buffer.append("{");
buffer.append(String.format("\"touser\":\"%s\"", template.getToUser())).append(",");
buffer.append(String.format("\"template_id\":\"%s\"", template.getTemplateId())).append(",");
//消息连接
//buffer.append(String.format("\"url\":\"%s\"", this.url)).append(",");
buffer.append(String.format("\"topcolor\":\"%s\"", template.getTopColor())).append(",");
buffer.append("\"data\":{");
TemplateParam param = null;
for (int i = 0; i < template.getTemplateParamList().size(); i++) {
param = template.getTemplateParamList().get(i);
// 判断是否追加逗号
if (i < template.getTemplateParamList().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 static void main(String args[]){
//第一个参数为用户关注微信后的唯一标识OpenId,第二个和第三个参数根据自己需要传递
Template("onvI8w_23T****************","调休申请","武腾坤");
}
}
“`
运行结果
方法中用到的CommonUtil 类为微信开发工具类,详细代码请查看柳峰老师的博客。 群发我是用for循环来解决的。。。
上一篇: ROS开发(一)创建工作空间
下一篇: 没有IDE如何编译JAVA项目