Java 推送微信公众号消息

1 新建消息请求类 WeChatTemplateRequest

@Data
public class WeChatTemplateRequest {
    private String touser;
    private String template_id;
    private Map data;
    private String url;
    private String topcolor;
}

2 模板消息熟系类 WeChatTemplateData

public class WeChatTemplateData {
    private String value;
    private String color;
}

3 实现调用

private CommonRes sendWeChatByOpenid(String openId, String title, String content, String url) {
        CommonRes res = new CommonRes(-1, "失败"); // 自己去写一个公共返回类,可自由定义
        if (CommonUtil.existNull(openId, title, content)) {
            res.setMsg("未知的openid、标题或内容");
            return res;
        }

        // 获取 access token
        String accessToken = getAccessToken(); // 自己写方法去实现
        if (StringUtils.isEmpty(accessToken)) {
            res.setMsg("获取 token 失败");
            return res;
        }

        String tempUrl =  sendTemplateUrl += accessToken; // sendTemplateUrl 是推送模板消息的请求链接
        WeChatTemplateRequest t = new WeChatTemplateRequest();
        t.setTouser(openId);
        t.setTopcolor("#000000");

        if (url != null && !StringUtils.isEmpty(url)) {
            t.setUrl(url);
        }

        t.setTemplate_id(templateId);
        Map m = new HashMap();
        WeChatTemplateData first = new WeChatTemplateData();
        first.setColor("#173177");
        first.setValue(title);
        m.put("first", first);

        WeChatTemplateData keyword1 = new WeChatTemplateData();
        keyword1.setColor("#173177");
        keyword1.setValue("信息科");
        m.put("keyword1", keyword1);

        WeChatTemplateData keyword2 = new WeChatTemplateData();
        keyword2.setColor("#173177");
        keyword2.setValue(DateUtil.now_ch()); // 发送时间,可自己去定义
        m.put("keyword2", keyword2);

        WeChatTemplateData remark = new WeChatTemplateData();
        remark.setColor("blue");
        remark.setValue(content);
        m.put("remark", remark);

        t.setData(m);
        ResponseEntity r = restTemplate.postForEntity(tempUrl, t, WeChatTemplateResponse.class); // 退送消息
        res.setCode(r.getBody().getErrcode());
        res.setMsg(r.getBody().getErrmsg());
        return res;
    }

你可能感兴趣的