Java对接微信公众号模板消息

Java架构技术进阶

共 3317字,需浏览 7分钟

 · 2021-03-29

场景

产品经理今天告知想要一个功能:微信定时接收自己的运营平台每天的数据,比如今天注册多少人,有多少个订单等!暂时想到的是通过微信公众号给关注的特定客户发送运维消息,看了公众号提供的模板功能,就记录下来便于以后对接!

获取ACCESS_TOKEN

公众号提供的功能api的基础前提是需要拿到token,拿到token后才能去调用相关的接口



获取token直接就是一个get请求,代码如下:

/**
* @author:JackRen
* @Description:获取授权token
* @date:2021年3月25日下午5:34:48
* @return
*/

public static String obtainAccessToken() {
/**发送Https请求到微信*/
Map<String, Object> respMap;
String resp = null;

resp = JsoupTool.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=XXX&secret=XXX", null);
respMap = (Map<String, Object>)JsonTool.parse(resp);
logger.info("令牌:"+respMap);
String token = String.valueOf(respMap.get("access_token"));
return token;
}

创建模板消息



可以自定义自己的模板消息,创建后


可以看到自己创建的模板ID,先暂时记录下来

发送模板消息



这边需要说的是图中的红框部分,appid要求是必填,如果你不跳小程序,这个参数可以不传,如果想要跳转小程序的时候再传入和公众号关联的小程序的appid。

拼装数据

/**
* @author:JackRen
* @Description:TODO
* @date:2021年3月25日下午5:36:23
*/

public static void editSendTemplateInfo(){
Map<String, Object> maps = new HashMap<String, Object>();
Map<String, Object> firstMap = new HashMap<String, Object>();
firstMap.put("value", "你的订单已生成,请注意查收");
firstMap.put("color", "#173177");
maps.put("first", firstMap);

Map<String, Object> keyword1Map = new HashMap<String, Object>();
keyword1Map.put("value", "123");
keyword1Map.put("color", "#173177");
maps.put("keyword1", keyword1Map);

Map<String, Object> keyword2Map = new HashMap<String, Object>();
keyword2Map.put("value", "345");
keyword2Map.put("color", "#173177");
maps.put("keyword2", keyword2Map);

Map<String, Object> keyword3Map = new HashMap<String, Object>();
keyword3Map.put("value", "567");
keyword3Map.put("color", "#173177");
maps.put("keyword3", keyword3Map);

Map<String, Object> keyword4Map = new HashMap<String, Object>();
keyword4Map.put("value", "888");
keyword4Map.put("color", "#173177");
maps.put("keyword4", keyword4Map);

sendTemplateMessage(token, maps);
}

发送模板消息

/**
* @author:JackRen
* @Description:微信发送模板信息
* @date:2021年3月25日下午5:37:57
* @param accessToken
* @param jsonMsg
* @throws JSONException
*/

public static void sendTemplateMessage(String accessToken,Map<String, Object> jsonMsg) throws JSONException{
logger.info("消息内容:{"+jsonMsg+"}");
//请求地址
String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken);
String wx_openid = "sdcdferdf";
String template_id = "6O_NR-IDP";
//发送客服消息
JSONObject json = new JSONObject();
json.accumulate("touser",wx_openid);
json.accumulate("template_id",template_id);
json.put("data", jsonMsg);
logger.info("拼装的参数:json={}",json);
/**发送Https请求到微信*/
Map<String, Object> respMap;
String resp = null;
Map<String, Object> headParam = new HashMap<String, Object>();
resp = WXHttpTool.post(requestUrl, json.toString(), "application/x-www-form-urlencoded; charset=utf-8", headParam);
respMap = (Map<String, Object>)JsonTool.parse(resp);
logger.info("返回消息:"+respMap);
}

测试


浏览 48
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报