微信公众号发送模板消息—java版本
微信模板消息接口地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
测试发送模板消息案例:
一、发送模版消息以及获取 access_token工具类
public class WXInterfaceRequestUtil {
private static Logger logger = LoggerFactory.getLogger(WXInterfaceRequestUtil.class);
/**
* 发送模版消息
* @param params
* @param accessToken
*/
public static void WXIntegralTemplateMessage(String params, String accessToken){
try {
Request sendMes = Request.create("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken, Request.METHOD.POST);
sendMes.setData(params);
Response res = Sender.create(sendMes).send();
if(res.isOK()){
System.out.println("WXIntegralTemplateMessage发送消息成功");
logger.error("WXIntegralTemplateMessage发送消息成功");
}
} catch (Exception e) {
System.out.println("WXIntegralTemplateMessage发送消息失败");
logger.error("WXIntegralTemplateMessage发送消息失败");
e.printStackTrace();
}
}
/**
* 获取access_token
*/
public static String WXGetAccessToken(){
String accessToken ="";
try {
String wxspAppid=WeixinConfig.APP_ID;
String wxspSecret=WeixinConfig.APP_SECRET;
Request getToken = Request.create("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+wxspAppid+"&secret=c4eba9961c59534ef7cb0813c6daaf83", Request.METHOD.GET);
Response respToken = Sender.create(getToken).send();
if (respToken.isOK()) {
//解析相应内容(转换成json对象)
Map map= Json.fromJson(Map.class,respToken.getContent());
accessToken= Strings.sBlank(map.get("access_token"));
if(StringUtils.isNotEmpty(accessToken)){
System.out.println("WXGetAccessToken获取AccessToken成功");
logger.error("WXGetAccessToken获取AccessToken成功");
return accessToken;
}
}
} catch (Exception e) {
System.out.println("WXGetAccessToken获取AccessToken失败");
logger.error("WXGetAccessToken获取AccessToken失败");
e.printStackTrace();
}
return accessToken;
}
public static void main(String[] args){
WXGetAccessToken();
}
}
二、封装积分变动消息提醒内容工具类
public class WXIntegralTemplateMessageDTO {
private Map<String, Object> map;
private Map<String, Object> data;
/**
* 封装积分变动消息提醒内容
*
* @param touser 收件人openid
* @param template_id 模版消息id
* @param url 积分变动内容链接
* @param topcolor 颜色
* @param customerName 会员名称
* @param vipCode 会员卡号
* @param text 内容
*/
public WXIntegralTemplateMessageDTO(String touser, String template_id, String url, String topcolor, String customerName,String vipCode,String text) {
map = new LinkedHashMap<String, Object>();
data = new LinkedHashMap<String, Object>();
LinkedHashMap<String, String> first = new LinkedHashMap<String, String>();
first.put("value", "会员积分变动提醒");
first.put("color", "#743A3A");
data.put("first", first);
LinkedHashMap<String, String> keyword1 = new LinkedHashMap<String, String>();
keyword1.put("value",customerName);
keyword1.put("color", "#FF0000");
data.put("keyword1", keyword1);
LinkedHashMap<String, String> keyword2 = new LinkedHashMap<String, String>();
keyword2.put("value", vipCode);
keyword2.put("color", "#C4C400");
data.put("keyword2", keyword2);
LinkedHashMap<String, String> keyword3 = new LinkedHashMap<String, String>();
keyword3.put("value", text);
keyword3.put("color", "#0000FF");
data.put("keyword3", keyword3);
LinkedHashMap<String, String> remark = new LinkedHashMap<String, String>();
remark.put("value", "如有疑问请在公众号留言");
remark.put("color", "#000000");
data.put("remark", remark);
map.put("touser", touser);
map.put("template_id", template_id);
map.put("url", url);
map.put("topcolor", topcolor);
map.put("data", data);
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public Map<String, Object> getDate() {
return data;
}
public void setDate(Map<String, Object> date) {
this.data = date;
}
}
三、开始发送消息
//获取用户accessToken
String accessToken = WXInterfaceRequestUtil.WXGetAccessToken();
if(StringUtils.isNotEmpty(accessToken)){
//模板id
String template_id = WeixinConfig.TEMPLATE_ID;
//点击模板后的链接地址
String url = "";
//模板的主题颜色
String topcolor = "#008000";
//收件人openId
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
String nowTime = simpleDateFormat.format(new Date());
//会员当前总积分 减去 会员消费之后的总积分
Double aDouble = customer1.getMemberPoint() - customer.getMemberPoint();
String text = "";
if (aDouble > 0) {//消费加积分
text = "您与" + nowTime + ",在门店消费获得" + aDouble + "积分,目前您可用积分为" + customer.getMemberPoint();
} else {//消费减去积分
text = "您与" + nowTime + ",在门店消费扣钱" + aDouble + "积分,目前您可用积分为" + customer.getMemberPoint();
}
//构造输入参数
WXIntegralTemplateMessageDTO wn = new WXIntegralTemplateMessageDTO(customer1.getWechaId(), template_id, url, topcolor, customer1.getCustomerName(), customer1.getVipCode(), text);
Object object = JSONObject.toJSON(wn.getMap());
WXInterfaceRequestUtil.WXIntegralTemplateMessage(object.toString(), accessToken);
}