微信公众号开发-模板推送封装参数

微信公众号开发-模板推送封装参数

不得不说微信的开发文档的恶心之处

  • 微信推送模板
{{first.DATA}}
审核状态:{{keyword1.DATA}}
操作时间:{{keyword2.DATA}}
{{remark.DATA}}
  • 我们数据库存储的格式
{
"touser":"${touser}",
"data":${data},
"template_id":"${template_id}",
"miniprogram":{"pagepath":"${pagepath}","appid":"${appid}"}
}
  • 参数替换
 public List<String> wxTemplateConversion(WxTemplateVo wxTemplateVo, WxPushMsg wxPushMsg){
        List<String> wxPushPostMsg = new ArrayList<>();
        if(wxPushMsg != null && ValidateHelper.isNotEmptyCollection(wxPushMsg.getOpenidList())){
            for(String openid:wxPushMsg.getOpenidList()){
                //替换模板参数
                String postStr = wxTemplateVo.getContent();
                //模板ID
                postStr = postStr.replace("${template_id}", wxTemplateVo.getTemplateId());
                //微信小程序appid
                postStr = postStr.replace("${appid}", wxPushMsg.getAppid());
                //微信公众号用户openid
                postStr = postStr.replace("${touser}", openid);
                //微信小程序内部地址
                postStr = postStr.replace("${pagepath}", wxPushMsg.getPagepath());
                //推送参数
                postStr = postStr.replace("${data}", JSONObject.toJSONString(wxPushMsg.getData()));
                wxPushPostMsg.add(postStr);
            }
        }
        return wxPushPostMsg;
    }
  • 主要的是data的数据封装,使用可变参进行封装,尽量避免繁琐的first,remark的写法
 public static TreeMap<String,WxTemplateData> buildWxTemplateMsgData(WxTemplateData first, WxTemplateData remark, WxTemplateData...templateList){
        TreeMap<String, WxTemplateData> dataTreeMap = new TreeMap<>();
        dataTreeMap.put("first", first);
        for(int index = 0;index < templateList.length ;index++){
            String key = "keyword" + (index+ 1);
            dataTreeMap.put(key, templateList[index]);
        }
        dataTreeMap.put("remark", remark);
        return dataTreeMap;
    }
  • 调用
TreeMap<String, WxTemplateData> dataTreeMap = WxPushUtil.buildWxTemplateMsgData(new WxTemplateData("感谢您进行实名认证!", ""),
                    new WxTemplateData("**********************!", "#FF0000"),
                    new WxTemplateData("认证成功", ""),
                    new WxTemplateData(TimeUtil.getNowTime(), "")
            );
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,732评论 0 15
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,794评论 1 32
  • 荷西问三毛:你想嫁个什么样的人? 三毛说:看的顺眼,千万富翁也嫁。看的不顺眼,亿万富翁也嫁。 荷西就说:那说来说去...
    漠上花哈阅读 4,377评论 0 0
  • 明晚六点前发一个平马出来参考
    信者有福阅读 747评论 0 3
  • 一缕青丝绕云间,细雨捻花作酒钱; 其实我们每个人都是自私的,每个人都渴望得到一个完美的爱情,不论结果...
    茶几人生阅读 2,662评论 0 0