Java微信公众平台开发之发送模板消息

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。


关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制,以公众号MP后台开发者中心页面中标明的数字为准。


关于接口文档,请注意:

1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
2、模板中参数内容必须以".DATA"结尾,否则视为保留字;

3、模板保留符号"{{ }}"。


模板申请成功之后直接新增不需要额外配置的,如果是在测试号中测试的,复制粘贴的时候要注意以上注意项

以下是我使用的模板消息

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. {{first.DATA}}  
  2. 旅行活动名称:{{keyword1.DATA}}  
  3. 订单金额:{{keyword2.DATA}}  
  4. 旅行时间:{{keyword3.DATA}}  
  5. 参与人数:{{keyword4.DATA}}  
  6. {{remark.DATA}}  

官方的demo

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. POST数据示例如下:  
  2.       {  
  3.            "touser":"OPENID",  
  4.            "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",  
  5.            "url":"http://weixin.qq.com/download",              
  6.            "data":{  
  7.                    "first": {  
  8.                        "value":"恭喜你购买成功!",  
  9.                        "color":"#173177"  
  10.                    },  
  11.                    "keynote1":{  
  12.                        "value":"巧克力",  
  13.                        "color":"#173177"  
  14.                    },  
  15.                    "keynote2": {  
  16.                        "value":"39.8元",  
  17.                        "color":"#173177"  
  18.                    },  
  19.                    "keynote3": {  
  20.                        "value":"2014年9月22日",  
  21.                        "color":"#173177"  
  22.                    },  
  23.                    "remark":{  
  24.                        "value":"欢迎再次购买!",  
  25.                        "color":"#173177"  
  26.                    }  
  27.            }  
  28.        }  

1.根据官方实例创建参数的Bean

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class TemplateData {  
  2.   
  3.     private String value;  
  4.     private String color;  
  5.   
  6.     public String getValue() {  
  7.         return value;  
  8.     }  
  9.   
  10.     public void setValue(String value) {  
  11.         this.value = value;  
  12.     }  
  13.   
  14.     public String getColor() {  
  15.         return color;  
  16.     }  
  17.   
  18.     public void setColor(String color) {  
  19.         this.color = color;  
  20.     }  
  21. }  

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class WechatTemplate {  
  2.   
  3.     private String touser;  
  4.   
  5.     private String template_id;  
  6.   
  7.     private String url;  
  8.   
  9.     private Map<String, TemplateData> data;  
  10.   
  11.     public String getTouser() {  
  12.         return touser;  
  13.     }  
  14.   
  15.     public void setTouser(String touser) {  
  16.         this.touser = touser;  
  17.     }  
  18.   
  19.     public String getTemplate_id() {  
  20.         return template_id;  
  21.     }  
  22.   
  23.     public void setTemplate_id(String template_id) {  
  24.         this.template_id = template_id;  
  25.     }  
  26.   
  27.     public String getUrl() {  
  28.         return url;  
  29.     }  
  30.   
  31.     public void setUrl(String url) {  
  32.         this.url = url;  
  33.     }  
  34.   
  35.     public Map<String, TemplateData> getData() {  
  36.         return data;  
  37.     }  
  38.   
  39.     public void setData(Map<String, TemplateData> data) {  
  40.         this.data = data;  
  41.     }  
  42. }  
2.创建发送的方法

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private final String SEND_TEMPLAYE_MESSAGE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";  
  2.   
  3. public void sendTemplateMessage(String accessToken, WechatTemplate wechatTemplate) {      
  4.     String jsonString = new Gson().toJson(wechatTemplate).toString();     
  5.     String requestUrl = SEND_TEMPLAYE_MESSAGE_URL.replace("ACCESS_TOKEN", accessToken);   
  6.     JSONObject jsonObject = HttpRequestUtil.httpRequestJSONObject(requestUrl, HttpRequestUtil.POST_METHOD, jsonString);   
  7.     logger.info("jsonObject="+jsonObject);    
  8.     if (null != jsonObject) {  
  9.         int errorCode = jsonObject.getInt("errcode");         
  10.         if (0 == errorCode) {  
  11.             logger.info("模板消息发送成功");  
  12.         } else {  
  13.             String errorMsg = jsonObject.getString("errmsg");  
  14.             logger.info("模板消息发送失败,错误是 "+errorCode+",错误信息是"+ errorMsg);  
  15.         }  
  16.     }  
  17. }  
3.根据业务需要调用方法
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. String accessToken = WechatUtil.getAccessToken(WechatConfig.APP_ID, WechatConfig.APP_SECRET).getToken();  
  2. logger.info("为模板消息接口获取的accessToken是"+accessToken);  
  3. WechatTemplate wechatTemplate = new WechatTemplate();  
  4. wechatTemplate.setTemplate_id("Ub2oYYFPf8ofmA17H31Zqu9Z_HLycZ7MC-Dx_Se1Nkw");  
  5. wechatTemplate.setTouser(fromUserName);  
  6. wechatTemplate.setUrl("http://music.163.com/#/song?id=27867140");  
  7.   
  8. Map<String,TemplateData> m = new HashMap<String,TemplateData>();  
  9. TemplateData first = new TemplateData();  
  10. first.setColor("#000000");    
  11. first.setValue("您的户外旅行活动订单已经支付完成,可在我的个人中心中查看。");    
  12. m.put("first", first);  
  13.   
  14. TemplateData keyword1 = new TemplateData();    
  15. keyword1.setColor("#000000");    
  16. keyword1.setValue("1.2发现尼泊尔—人文与自然的旅行圣地 ");    
  17. m.put("keyword1", keyword1);  
  18.   
  19. TemplateData keyword2 = new TemplateData();    
  20. keyword2.setColor("#000000");    
  21. keyword2.setValue("5000元");    
  22. m.put("keyword2", keyword2);  
  23.   
  24. TemplateData keyword3 = new TemplateData();    
  25. keyword3.setColor("#000000");    
  26. keyword3.setValue("2017.1.2");    
  27. m.put("keyword3", keyword3);  
  28.   
  29. TemplateData keyword4 = new TemplateData();    
  30. keyword4.setColor("#000000");    
  31. keyword4.setValue("5");    
  32. m.put("keyword4", keyword4);  
  33.   
  34. TemplateData remark = new TemplateData();    
  35. remark.setColor("#000000");    
  36. remark.setValue("请届时携带好身份证件准时到达集合地点,若临时退改将产生相应损失,敬请谅解,谢谢!");    
  37. m.put("remark", remark);  
  38. wechatTemplate.setData(m);      
  39. try {  
  40.     templateMessageService.sendTemplateMessage(accessToken, wechatTemplate);  
  41. catch (Exception e) {  
  42.     logger.info("异常"+e.getMessage());  
  43. }      
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值