package com.ltkj.web.wxUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Value; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; public class WxUtil { @Value("${wx.miniapp.appid}") private static String APPID; @Value("${wx.miniapp.secret}") private static String APPSECRET; public static String getAccessToken(){ String APPID="wx40a545f1a8eb1d9d"; String APPSECRET="c86c1ff7f91c16380111878e9a259237"; String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+APPID+"&secret="+APPSECRET; System.out.println("accessTokenUrl = " + accessTokenUrl); HttpClientUtils hru = new HttpClientUtils(); String access_token = hru.sendHttpGet(accessTokenUrl); JSONObject jsonObject= JSON.parseObject(access_token); String token = jsonObject.get("access_token").toString();//获取access_token System.out.println("access_token = " + token); return token; } /** * 调用微信开放接口subscribeMessage.send发送订阅消息 通用类 * POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN */ public static void sendCommonSubscribeMessage(Map params,JSONObject data){ HttpURLConnection httpConn = null; InputStream is = null; BufferedReader rd = null; String accessToken = null; String str = null; try { //获取token 小程序全局唯一后台接口调用凭据 accessToken = getAccessToken(); JSONObject xmlData = new JSONObject(); xmlData.put("touser", params.get("touser"));//接收者(用户)的 openid xmlData.put("template_id", params.get("template_id"));//所需下发的订阅模板id xmlData.put("page", params.get("page"));//点击模板卡片后的跳转页面,仅限本小程序内的页面 xmlData.put("miniprogram_state", params.get("miniprogram_state"));//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 xmlData.put("lang", "zh_CN");//进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN返回值 xmlData.put("data", data);//小程序模板数据 System.out.println("发送模板消息xmlData:" + xmlData); URL url = new URL( "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken); httpConn = (HttpURLConnection)url.openConnection(); httpConn.setRequestProperty("Host", "https://api.weixin.qq.com"); // httpConn.setRequestProperty("Content-Length", String.valueOf(xmlData.)); httpConn.setRequestProperty("Content-Type", "text/xml; charset=\"UTF-8\""); httpConn.setRequestMethod("POST"); httpConn.setDoInput(true); httpConn.setDoOutput(true); OutputStream out = httpConn.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8"); osw.write(xmlData.toString()); osw.flush(); osw.close(); out.close(); is = httpConn.getInputStream(); rd = new BufferedReader(new InputStreamReader(is, "UTF-8")); while ((str = rd.readLine()) != null) { System.out.println("返回数据:" + str); } } catch (Exception e) { System.out.println("发送模板消息失败.." + e.getMessage()); } } }