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

  • Post author:
  • Post category:java


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

关于使用规则,请注意:

1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;

2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;

3、在所选择行业的模板库中选用已有的模板进行调用;

4、每个账号可以同时使用25个模板。

5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制,以公众号MP后台开发者中心页面中标明的数字为准。

关于接口文档,请注意:

1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;

2、模板中参数内容必须以”.DATA”结尾,否则视为保留字;

3、模板保留符号”{

{ }}”。

模板申请成功之后直接新增不需要额外配置的,如果是在

测试

号中测试的,复制粘贴的时候要注意以上注意项

以下是我使用的模板消息

  1. {{first.DATA}}
    订单号:{{keyword1.DATA}}
    商品编码:{{keyword2.DATA}}
    合计:{{keyword3.DATA}}
    {{remark.DATA}}

官方的demo

  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


  1. public


    class

    TemplateData {

  2. private

    String value;

  3. private

    String color;

  4. public

    String getValue() {

  5. return

    value;
  6. }

  7. public


    void

    setValue(String value) {

  8. this

    .value = value;
  9. }

  10. public

    String getColor() {

  11. return

    color;
  12. }

  13. public


    void

    setColor(String color) {

  14. this

    .color = color;
  15. }
  16. }

  1. public


    class

    WechatTemplate {

  2. private

    String touser;

  3. private

    String template_id;

  4. private

    String url;

  5. private

    Map<String, TemplateData> data;

  6. public

    String getTouser() {

  7. return

    touser;
  8. }

  9. public


    void

    setTouser(String touser) {

  10. this

    .touser = touser;
  11. }

  12. public

    String getTemplate_id() {

  13. return

    template_id;
  14. }

  15. public


    void

    setTemplate_id(String template_id) {

  16. this

    .template_id = template_id;
  17. }

  18. public

    String getUrl() {

  19. return

    url;
  20. }

  21. public


    void

    setUrl(String url) {

  22. this

    .url = url;
  23. }

  24. public

    Map<String, TemplateData> getData() {

  25. return

    data;
  26. }

  27. public


    void

    setData(Map<String, TemplateData> data) {

  28. this

    .data = data;
  29. }
  30. }

2.创建发送的方法



  1. // 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_TOKEN

    public 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.根据业务需要调用方法

  1. //模板发送

    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());

    }

    }



版权声明:本文为sxmfendou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。