微信公众号发送模板消息

  • 添加模板插件

 

等待微信服务器审批通过

  • 添加模板

 

  • 封装模板消息数据

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<String, Item> {

 

        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;

        }

    }

}

 

 

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

 

  • 发送消息

/**

     * 发送模板消息

     * @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<String, String> dataMap = new HashMap<String, String>();

            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;

    }

 

  • 执行效果

 

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值