微信模板发送

随手记录

/**
     * 获取接口凭证
     *
     * @param appId      微信公众号应用唯一标识
     * @param appSecret  微信公众号应用密钥(注意保密)
     * @param openId     用户编号
     * @param url        广告地址
     * @param templateId 用户编号
     * @param data       发送内容
     * @return 
     */
    private static String send(String appId, String appSecret, String openId, String url, String templateId, String data) {
        try {

            String accessToken = WxpubOAuth.getAccessToken(appId, appSecret);
            logger.info(accessToken);
            String sendUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("touser", openId);//推送的用户编号
            paramMap.put("template_id", templateId);//模板编号
            paramMap.put("url", url);//点击跳转的地址
            paramMap.put("data", JsonUtil.writeJson2Object(data, Map.class));
            logger.info("公众号推送消息参数:" + JsonUtil.writeObject2Json(paramMap));
            String ret = sendPost(sendUrl, JsonUtil.writeObject2Json(paramMap));
            JsonParser jp = new JsonParser();
            JsonObject respJson = jp.parse(ret).getAsJsonObject();
            if (StringUtils.equalsAny("42001","40001", respJson.get("errcode").getAsString())) {
                SpringContext.getBean(JedisClient.class).del(WxpubOAuth.CT_WX_ACCESS_TOKEN);
                WxpubOAuth.getAccessToken(appId, appSecret);
                send(appId,appSecret,openId,url,templateId,data);
                return null;
            }
            logger.info("公众号消息发送返回:" + ret);
            return null;
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            e.printStackTrace();
        }
        return "发送失败";
    }

 

/**
     * 获取接口凭证
     *
     * @param appId     微信公众号应用唯一标识
     * @param appSecret 微信公众号应用密钥(注意保密)
     * @return 获取openid的URL地址
     */
    public static String getAccessToken(String appId, String appSecret)
            throws UnsupportedEncodingException {
        String access_token = SpringContext.getBean(JedisClient.class).get(CT_WX_ACCESS_TOKEN);
        if (StringUtils.isNotBlank(access_token)) {
            return access_token;
        }
        Map<String, String> data = new HashMap<String, String>();
        data.put("appid", appId);
        data.put("secret", appSecret);
        data.put("grant_type", "client_credential");
        String queryString = WxpubOAuth.httpBuildQuery(data);
        String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?" + queryString;
        String resp = httpGet(accessTokenUrl);
        logger.info(resp);
        JsonParser jp = new JsonParser();
        JsonObject respJson = jp.parse(resp).getAsJsonObject();
        if (respJson.has("errcode")) {
            return "";
        }
        access_token = respJson.get("access_token").getAsString();
        SpringContext.getBean(JedisClient.class).set(CT_WX_ACCESS_TOKEN, access_token, 3600);
        return respJson.get("access_token").getAsString();
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值