模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制,以公众号MP后台开发者中心页面中标明的数字为准。
关于接口文档,请注意:
1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
2、模板中参数内容必须以”.DATA”结尾,否则视为保留字;
3、模板保留符号”{
{ }}”。
模板申请成功之后直接新增不需要额外配置的,如果是在
测试
号中测试的,复制粘贴的时候要注意以上注意项
以下是我使用的模板消息
-
{{first.DATA}} 订单号:{{keyword1.DATA}} 商品编码:{{keyword2.DATA}} 合计:{{keyword3.DATA}} {{remark.DATA}}
官方的demo
- POST数据示例如下:
- {
- “touser”:”OPENID”,
- “template_id”:”ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY”,
- “url”:”http://weixin.qq.com/download”,
- “data”:{
- “first”: {
- “value”:”恭喜你购买成功!”,
- “color”:”#173177″
- },
- “keynote1”:{
- “value”:”巧克力”,
- “color”:”#173177″
- },
- “keynote2”: {
- “value”:”39.8元”,
- “color”:”#173177″
- },
- “keynote3”: {
- “value”:”2014年9月22日”,
- “color”:”#173177″
- },
- “remark”:{
- “value”:”欢迎再次购买!”,
- “color”:”#173177″
- }
- }
- }
1.根据官方实例创建参数的Bean
-
public
class
TemplateData { -
private
String value; -
private
String color; -
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
class
WechatTemplate { -
private
String touser; -
private
String template_id; -
private
String url; -
private
Map<String, TemplateData> data; -
public
String getTouser() { -
return
touser; - }
-
public
void
setTouser(String touser) { -
this
.touser = touser; - }
-
public
String getTemplate_id() { -
return
template_id; - }
-
public
void
setTemplate_id(String template_id) { -
this
.template_id = template_id; - }
-
public
String getUrl() { -
return
url; - }
-
public
void
setUrl(String url) { -
this
.url = url; - }
-
public
Map<String, TemplateData> getData() { -
return
data; - }
-
public
void
setData(Map<String, TemplateData> data) { -
this
.data = data; - }
- }
2.创建发送的方法
-
// TODO Auto-generated method stub
private final static String SEND_TEMPLAYE_MESSAGE_URL = “https://api.weixin.qq.com/cgi-bin/message/template/send”;//?access_token=ACCESS_TOKENpublic static void sendTemplateMessage1(String accessToken, Template weixinTemplate) {
String jsonString = new Gson().toJson(weixinTemplate).toString();
System.out.println(jsonString+”xxx”);
TreeMap<String, String> map = new TreeMap<String, String>();
map.put(“access_token”, accessToken);
String result = HttpRequestUtil.HttpDefaultExecute(HttpRequestUtil.POST_METHOD, SEND_TEMPLAYE_MESSAGE_URL, map, jsonString);
JSONObject jsonObject = JSONObject.fromObject(result);
//JSONObject jsonObject = HttpRequestUtil.httpRequestJSONObject(requestUrl, HttpRequestUtil.POST_METHOD, jsonString);
System.out.println(“jsonObject=”+jsonObject);
if (null != jsonObject) {
int errorCode = jsonObject.getInt(“errcode”);
if (0 == errorCode) {
System.out.println(“模板消息发送成功”);
} else {
String errorMsg = jsonObject.getString(“errmsg”);
System.out.println(“模板消息发送失败,错误是 “+errorCode+”,错误信息是”+ errorMsg);
}
}
}
HttpRequestUtil方法见
点我
3.根据业务需要调用方法
-
//模板发送
public static void sendTemplateMessage(String appid,String appsecret,String openid,String setUrl,String content,String time,String tradeType1,String curAmount1) {
// 调用接口获取access_token
AccessToken accessToken = WeixinUtil.getAccessToken(appid, appsecret);
System.out.println(accessToken.getToken()+”accessToken”);
Template wechatTemplate = new Template();
wechatTemplate.setTemplate_id(“Z6GilYfpFRlzGlmdUpFo16Hfq8Rou_5p6nl8fAPjlT4”);
wechatTemplate.setTouser(openid);
if(!StringUtils.isEmpty(setUrl)){
wechatTemplate.setUrl(setUrl);
}
System.out.println(openid+”ppppp”);
Map<String,DataTest> m = new HashMap<String,DataTest>();
DataTest first = new DataTest();
first.setColor(“#ff0000”);
first.setValue(content); //头内容
m.put(“first”, first);DataTest tradeDateTime = new DataTest(); //时间
tradeDateTime.setColor(“#ff0000”);
tradeDateTime.setValue(time);
m.put(“tradeDateTime”, tradeDateTime);DataTest tradeType = new DataTest(); //交易类型
tradeType.setColor(“#ff0000 “);
tradeType.setValue(tradeType1);
m.put(“tradeType”, tradeType);DataTest curAmount = new DataTest(); //金额
curAmount.setColor(“#ff0000”);
curAmount.setValue(curAmount1);
m.put(“curAmount”, curAmount);//
DataTest remark = new DataTest(); //结束语
remark.setColor(“#000000”);
remark.setValue(“竭诚为您服务!”);
m.put(“remark”, remark);
wechatTemplate.setData(m);
try {
WeixinUtil.sendTemplateMessage1(accessToken.getToken(), wechatTemplate);
} catch (Exception e) {
System.out.println(“异常”+e.getMessage());
}}