微信公众号-获取信息、发送模板的备忘

 

1.获取access_token:

private static String appId = "微信公众号的appId";
private static String appSecret = "微信公众号的appSecret";

/**
 * 获取access_token
 *
 * @return
 */
public static String getToken() {
    String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
    String resp = HttpUtil.get(requestUrl);
    JSONObject result = JSONUtil.parseObj(resp);
    String token = result.getStr("access_token");
    return token;
}

2.获取关注了该公众号的用户信息列表:

/**
 * 获取关注了该公众号的用户信息列表
 *
 * @param accessToken
 * @return
 */
public static List<String> getUserList(String accessToken) {
    String requestUrl = weChat_get_user_url + accessToken;
    String resp = HttpUtil.get(requestUrl);
    JSONObject result = JSONUtil.parseObj(resp);
    JSONArray openIdJsonArray = result.getJSONObject("data").getJSONArray("openid");
    List<String> openIds = JSONUtil.toList(openIdJsonArray, String.class);
    return openIds;
}

3.发送公众号模板信息:

// 公众号的模板id(也有相应的接口可以查询到)
private static String templateId = "XXXXXX";

/**
 * 发送模板信息
 */
public static void sendMessage() {
    // 微信的基础accessToken
    String accessToken = getToken();

    //openId代表一个唯一微信用户,即微信消息的接收人
    List<String> openIds = getUserList(accessToken);

    String url = weChat_get_access_token + accessToken;

    //获取天数
    String date = DateUtil.format(new Date(), "yyyy-MM-dd");
    Week week = DateUtil.dayOfWeekEnum(new Date());

    // 模板参数(根据微信公众号定义的模板规则定义)
    Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>();
    sendMag.put("morning", new WeChatTemplateMsg("早安,保持好一天的好心情哈"));
    sendMag.put("date", new WeChatTemplateMsg(date));
    sendMag.put("week", new WeChatTemplateMsg(week.toChinese()));
    sendMag.put("city", new WeChatTemplateMsg("333"));
    sendMag.put("weather", new WeChatTemplateMsg("444"));
    sendMag.put("lowest", new WeChatTemplateMsg("r555"));

    sendMag.put("highest", new WeChatTemplateMsg("r555"));
    sendMag.put("pop", new WeChatTemplateMsg("r555"));
    sendMag.put("tips", new WeChatTemplateMsg("r555"));
    sendMag.put("loveDay", new WeChatTemplateMsg("r555"));
    sendMag.put("myBirthday", new WeChatTemplateMsg("r555"));
    sendMag.put("babyBirthday", new WeChatTemplateMsg("r555"));
    sendMag.put("pipi", new WeChatTemplateMsg(getRainbowContent()));

    RestTemplate restTemplate = new RestTemplate();

    for (int i = 0; i < openIds.size(); i++) {
        //拼接base参数
        Map<String, Object> sendBody = new HashMap<>();
        sendBody.put("touser", openIds.get(i));               // openId
        //sendBody.put("url", "www.baidu.com");         // 点击模板信息跳转地址
        sendBody.put("topcolor", "#FF0000");          // 顶色
        sendBody.put("data", sendMag);                   // 模板参数
        sendBody.put("template_id", templateId);      // 模板Id
        ResponseEntity<String> forEntity = restTemplate.postForEntity(url, sendBody, String.class);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值