微信公众号发送模板消息

  • 添加模板插件

微信公众号发送模板消息_第1张图片

 

微信公众号发送模板消息_第2张图片

等待微信服务器审批通过

微信公众号发送模板消息_第3张图片

  • 添加模板

微信公众号发送模板消息_第4张图片

微信公众号发送模板消息_第5张图片

微信公众号发送模板消息_第6张图片

微信公众号发送模板消息_第7张图片

 

  • 封装模板消息数据

package com.skynet.wechat.po;

import java.util.HashMap;

import com.alibaba.fastjson.JSONObject;

public class TemplateData {

    private String touser;

    private String template_id;

    private String url;

    private String topcolor;

    private TemplateItem data;

 

    public static TemplateData New() {

        return new TemplateData();

    }

 

    private TemplateData() {

        this.data = new TemplateItem();

    }

 

    public String getTouser() {

        return touser;

    }

 

    public TemplateData setTouser(String touser) {

        this.touser = touser;

        return this;

    }

 

    public String getTemplate_id() {

        return template_id;

    }

 

    public TemplateData setTemplate_id(String template_id) {

        this.template_id = template_id;

        return this;

    }

 

    public String getUrl() {

        return url;

    }

 

    public TemplateData setUrl(String url) {

        this.url = url;

        return this;

    }

 

    public String getTopcolor() {

        return topcolor;

    }

 

    public TemplateData setTopcolor(String topcolor) {

        this.topcolor = topcolor;

        return this;

    }

 

    public TemplateItem getData() {

        return data;

    }

 

    public TemplateData add(String key, String value, String color){

        data.put(key, new Item(value, color));

        return this;

    }

 

    /**

     * 直接转化成jsonString

     * @return {String}

     */

    public String build() {

        return JSONObject.toJSONString(this);

    }

 

    public class TemplateItem extends HashMap {

 

        private static final long serialVersionUID = -3728490424738325020L;

       

        public TemplateItem() {}

 

        public TemplateItem(String key, Item item) {

            this.put(key, item);

        }

    }

 

    public class Item {

        private Object value;

        private String color;

 

        public Object getValue() {

            return value;

        }

        public void setValue(Object value) {

            this.value = value;

        }

        public String getColor() {

            return color;

        }

        public void setColor(String color) {

            this.color = color;

        }

 

        public Item(Object value, String color) {

            this.value = value;

            this.color = color;

        }

    }

}

 

 

建议用这种方式封装数据,注意我的代码不是的。

微信公众号发送模板消息_第8张图片

 

  • 发送消息

/**

     * 发送模板消息

     * @param tplMsg 消息内容

     * @param accessToken

     * @return

     */

    public static JSONObject sendTemplateMessage(String tplMsg, String accessToken)

        throws WxErrorException {

        if (tplMsg != null) {

            JSONObject jsonObject = HttpClientUtils.httpPost(SEND_TEMPLATE_MESSAGE.replace("ACCESS_TOKEN", accessToken), tplMsg);

            if (isWxError(jsonObject)) {

                throw new WxErrorException(WxError.fromJson(jsonObject));

            }

            return jsonObject;

        }

        return null;

        }

  • 控制器调用

//4. 发送微信客服消息,一般满足特定条件

        if(result >0 ) {

            logger.info("提交加油订单成功=="+result);

            String accessToken = wechatService.getToken();

            String remark = "恭喜你,订单已提交请在2小时之内支付。";

            String openid = record.getOpenId();

            //4.1 创建模板消息对象封装数据

            TemplateMessage tplMsg = new TemplateMessage();

            tplMsg.setOpenid(openid);

            tplMsg.setTemplateId("bt7ArrMK_VZc8nU2FTXpR6OkhfFEDQamuSDJUkWA2Vg");

            tplMsg.setUrl("http://www.hnjindouyun.com/views/payment/pay.html?order="+orderNo);

            Map dataMap = new HashMap();

            dataMap.put("first", "订单提交成功");

            dataMap.put("keyword1", "油品" + record.getOilName());

            dataMap.put("keyword2", orderNo);

            dataMap.put("keyword3",DateUtil.timeToString(new Date()));

            try {

                dataMap.put("keyword4", BigDecimalUtil.fen2YuanAnother(record.getRealAmount().toString())+"元");

            } catch (Exception e) {

                e.printStackTrace();

                logger.info(String.format("分转换成元异常: %s",e.getMessage()));

            }

            dataMap.put("remark", remark);

            tplMsg.setDataMap(dataMap);

            logger.info(String.format("提交加油订单成功参数信息: token=%s, tplMsg=%s==",accessToken,tplMsg));

          //4.1 发送客服模板消息

            JSONObject json = WeixinUtil.sendTemplateMessage(tplMsg, accessToken);

            logger.info("提交加油订单成功,发送客服消息执行结果==="+json);

            return SkynetResult.success(orderNo);

        }else {

            logger.info("提交加油订单失败=="+result);

            return SkynetResult.fail();

        }

    /**

     * 发送模板消息 WeixinUtil

     * @param tplMsg 消息内容

     * @param accessToken

     * @return

     */

    public static JSONObject sendTemplateMessage(TemplateMessage tplMsg, String accessToken)

        throws WxErrorException {

        if (tplMsg != null) {

            JSONObject jsonObject = HttpClientUtils. httpPost(SEND_TEMPLATE_MESSAGE.replace("ACCESS_TOKEN", accessToken), tplMsg.toString());

            if (isWxError(jsonObject)) {

                throw new WxErrorException(WxError.fromJson(jsonObject));

            }

            return jsonObject;

        }

        return null;

    }

 

  • 执行效果

 

微信公众号发送模板消息_第9张图片

有问题留言,或者加微信:  fuzi_it 。

你可能感兴趣的:(微信开发)