java微信公众号开发发送模板消息

发送微信模板消息,大体分为两步,如下:

1.获取基础支持的access_token;

2.发送模板消息;

代码如下:

/**
 * 用户注册成功的模板消息
 */
public void registTemplate(UserExtend user, String openid, String appId, String secret){
    // 获取基础支持的access_token
    String resultUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ appId +"&secret="+ secret;
    String json = HttpUtil.get(resultUrl);
    JSONObject jsonObject = JacksonUtil.toEntity(json, JSONObject.class);
    String access_token = jsonObject.get("access_token").toString();
    // 发送模板消息
    String resultUrl2 = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token;
    // 封装基础数据
    WechatTemplate wechatTemplate = new WechatTemplate();
    wechatTemplate.setTemplate_id("LTXAoB-2oLRPNs26hobQBINwTwy9QXh3G4TtpAruNM4");
    wechatTemplate.setTouser(openid);
    wechatTemplate.setUrl("http://tw.xxx.com/member/member.html?id="+user.getId());
    Map mapdata = new HashMap<>();
    // 封装模板数据
  TemplateData first = new TemplateData();
    first.setValue("您好,您已注册成为XXX平台用户。");
    first.setColor("#173177");
    mapdata.put("first", first);

    TemplateData keyword1 = new TemplateData();
    keyword1.setValue(user.getMobile());
    first.setColor("#173177");
    mapdata.put("keyword1", keyword1);

    TemplateData keyword2 = new TemplateData();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    String format = formatter.format(DateUtil.date());
    keyword2.setValue(format);
    first.setColor("#173177");
    mapdata.put("keyword2", keyword2);

    TemplateData keyword3 = new TemplateData();
    keyword3.setValue("欢迎您的加入,请及时购买会员并完善资料>>");
    keyword3.setColor("#173177");
    mapdata.put("remark", keyword3);

    wechatTemplate.setData(mapdata);
    String toString = JacksonUtil.toJson(wechatTemplate).toString();
    String json2 = HttpUtil.post(resultUrl2,toString);
    JSONObject jsonObject2 = JacksonUtil.toEntity(json2, JSONObject.class);
    int result = 0;
    if (null != jsonObject2) {
        if (0 != jsonObject2.getInt("errcode")) {
            result = jsonObject2.getInt("errcode");
            StaticLog.error("错误 errcode:{} errmsg:{}", jsonObject2.getInt("errcode"), jsonObject2.get("errmsg").toString());
        }
    }
    StaticLog.info("模板消息发送结果:"+result);
}

用到的实体类如下:

public class WechatTemplate {
    private String touser;

    private String template_id;

    private String url;

    private Map data;

    public String getTouser() {
        return touser;
    }

    public void setTouser(String touser) {
        this.touser = touser;
    }

    public String getTemplate_id() {
        return template_id;
    }

    public void setTemplate_id(String template_id) {
        this.template_id = template_id;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Map getData() {
        return data;
    }

    public void setData(Map data) {
        this.data = data;
    }
}
public class TemplateData {
    private String value;
    private String color;
    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

注意:调用发送模板消息传递参数时需要将实体转为json字符串;其余封装的参数可参照微信模板消息的Api封装即可

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