Java-发送小程序模板消息
发送小程序模板消息的步骤如下:
-
登录小程序管理后台。
-
在左侧菜单栏中选择"开发",然后选择"开发设置"。
-
在"开发设置"页面中,找到"模板消息"部分,点击"添加模板"。
-
弹出的对话框中,选择需要发送的模板。
注意:发送小程序模板消息需要提前获取到用户的订阅权限,可以通过调用wx.requestSubscribeMessage接口获取。
-
在对话框中点击"确定",即可添加模板成功。
-
在左侧菜单栏中选择"模板消息",然后选择"添加模板消息"。
-
在"添加模板消息"页面中,填写模板消息的相关内容,包括模板ID、模板标题、模板内容等。
-
点击"确定",即可添加模板消息成功。
-
在左侧菜单栏中选择"模板库",找到刚添加的模板消息,点击"设置"。
-
在"设置"页面中,填写模板消息的相关配置,包括模板消息的跳转页面、模板消息的可跳转小程序等。
-
点击"确定",即可完成模板消息的配置。
-
在调用接口时,使用wx.requestSendSubscribeMessage接口发送小程序模板消息。
微信官方文档介绍:
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html
代码示例:
@Override
public AjaxResult sendMessage(String content,String userName) {
try {
//获取token
String access_token = "";
//先查绚,如果没有有效的Token再请求获取Token
MiniConfig miniConfig = wxApiBusinessMapper.getToken();
if (miniConfig!=null && miniConfig.getToken()!=null && miniConfig.getToken().trim().length() > 0 ){
if (miniConfig.getExpireTime()!=null){
if (miniConfig.getExpireTime().getTime() < (new Date()).getTime()){
AjaxResult ajaxResult = getToken(userName);
if ("0".equals(ajaxResult.get("code").toString())){
access_token = ajaxResult.get("msg").toString();
}
}else{
access_token = miniConfig.getToken();
}
}else{
AjaxResult ajaxResult = getToken(userName);
if ("0".equals(ajaxResult.get("code").toString())){
access_token = ajaxResult.get("msg").toString();
}
}
}else{
AjaxResult ajaxResult = getToken(userName);
if ("0".equals(ajaxResult.get("code").toString())){
access_token = ajaxResult.get("msg").toString();
}
}
System.out.println("access_token: "+access_token);
System.out.println("content: "+content);
String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token;
String response = HttpUtil.post(url,content);
System.out.println("response: "+response);
JSONObject responseJSONObject = JSONObject.parseObject(response);
if (responseJSONObject.getIntValue("errcode") == 0) {
return AjaxResult.success();
} else {
return AjaxResult.error("微信公众平台提示," + responseJSONObject.getString("errmsg"));
}
} catch (Exception ex) {
return AjaxResult.error("服务端提示,发送模版消息异常");
}
}
@Override
public AjaxResult getToken(String userName) {
String appIDStr = plaintextCipher(AppID,TYPE);
String appSecretStr = plaintextCipher(AppSecret,TYPE);
try {
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appIDStr + "&secret=" + appSecretStr;
String response = HttpUtil.get(url);
System.out.println("response==>>"+response);
JSONObject responseJSONObject = JSONObject.parseObject(response);
if (responseJSONObject.getString("access_token") == null || responseJSONObject.getString("access_token").trim().length() == 0){
return AjaxResult.error("微信公众平台提示:" + responseJSONObject.getString("errmsg"));
}else{
//删除之前的token
wxApiBusinessMapper.deleteToken(userName);
String token = responseJSONObject.getString("access_token");
System.out.println("token==>>"+token);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date((new Date()).getTime() + ((7200 - (5 * 60)) * 1000));
Date expireTime = sdf.parse(sdf.format(date));
//添加新的的token
MiniConfig miniConfig = new MiniConfig();
miniConfig.setToken(token);
miniConfig.setExpireTime(expireTime);
miniConfig.setCreate_by(userName);
int num = wxApiBusinessMapper.insertToken(miniConfig);
if (num > 0){
return AjaxResult.success(token);
}else{
return AjaxResult.error("TOKEN保存失败");
}
}
} catch (Exception ex) {
return AjaxResult.error("服务端提示,获取TOKEN失败," + ex.getMessage());
}
}