JAVA微信公众号开发第10篇发送模板消息

简介

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。
关于接口文档,请注意:
1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
2、模板中参数内容必须以”.DATA”结尾,否则视为保留字;
3、模板保留符号”{{ }}”。
======================只有认证后的服务号才可以申请模板消息的使用权限并获得该权限====
PS:=============请查阅JAVA微信公众号开发第1篇之环境配置与开发接入进行基本微信接入配置============

申请并添加模板

这里写图片描述

上传微信素材

使用wxService.mediaUpload(mediaType, fileType, inputStream)方法

  /**
    * <p>Title: pushGoOnlineMsg</p>
    * <p>Description: 功能上线通知</p>
    * @param touser       用户
    * @param url          链接
    * @param tiltle       标题
    * @param functionName 功能名称
    * @param remark       备注
    * @return
    */
    public  Message<TemplateSenderResult> pushGoOnlineMsg(String touser,String url,String tiltle,String functionName,String remark){
        int code=1002;
        String msg="发送成功!";
        TemplateSenderResult templateSenderResult=null;
        try {
            TemplateSender sender=new TemplateSender();
            sender.setTemplate_id("hTjJXn5M3KEkk4ei7z_YQTBxV1s6bQEPhcvbC1lXL3w");
            sender.setTouser(touser);
            sender.setUrl(url);
            Map<String, Object> data=new HashMap<String, Object>();
            data.put("first", new ModelMsgData(tiltle,"#1ba2e6"));
            data.put("name", new ModelMsgData(functionName,"#1ba2e6"));
            data.put("time", new ModelMsgData(new SimpleDateFormat("yyyy年MM月dd日").format(new Date()),"#1ba2e6"));
            data.put("remark", new ModelMsgData(remark,"#1ba2e6"));
            sender.setData(data);
            try {
                templateSenderResult=templateSend(sender);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
            code=-6666;
            msg="服务器开小差啦!";
        }
        return MessageUtil.getMessage(templateSenderResult, code, msg, null);
    }
    public TemplateSenderResult templateSend(TemplateSender sender) throws WxErrorException {
        TemplateSenderResult result = null;
        String postResult = null;
        String url = WxConsts.URL_TEMPLATE_SEND.replace("ACCESS_TOKEN",wxService.getAccessToken());
        try {
            postResult = post(url, sender.toJson());
            result = TemplateSenderResult.fromJson(postResult);
        } catch (IOException e) {
            throw new WxErrorException("[wx-tools]templateSend failure.");
        }
        return result;
    }
    public String post(String url, String params) throws WxErrorException {
        return execute(new SimplePostRequestExecutor(), url, params);
    }

    /**
     * 
     * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求
     *
     * @param executor
     * @param uri
     * @param data
     * @return
     * @throws WxErrorException
     * @throws IOException 
     */
    public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws      WxErrorException{
        try {
            return executeInternal(executor, uri, data);
        } catch (WxErrorException e) {
            throw e;
        }
    }
    /**
     * 请求执行器
     * 
     * @param executor
     * @param uri
     * @param data
     * @return
     * @throws WxErrorException
     * @throws IOException 
     */
    protected synchronized <T, E> T executeInternal(RequestExecutor<T, E> executor, String uri, E data)
            throws WxErrorException{
        try {
            return executor.execute(getHttpclient(), uri, data);
        } catch (WxErrorException e) {
            throw e;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

效果

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值