微信公众号消息推送-模板消息发送
生活随笔
收集整理的這篇文章主要介紹了
微信公众号消息推送-模板消息发送
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
先注冊(cè)一個(gè)微信公眾號(hào);或者申請(qǐng)接口測(cè)試號(hào)來(lái)進(jìn)行開發(fā);
接口測(cè)試號(hào)申請(qǐng)鏈接:
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
這里先介紹測(cè)試號(hào)的開發(fā);
點(diǎn)擊鏈接進(jìn)入頁(yè)面,會(huì)看到y(tǒng)一個(gè)二維碼,用微信掃描后就會(huì)分配給你一個(gè)微信公眾測(cè)試賬號(hào);
然后找到如下這個(gè)位置,點(diǎn)擊“新增測(cè)試模板”按鈕,填寫
?
下面是相關(guān)代碼;
@Testpublic void sendTemplate(){postTemplateMsg("appid","appSecret", "openId");//這里替換成你自己的信息}public String sendTemplateMessage(String openId){TemplateMsg tm=new TemplateMsg();tm.setTouser(openId);tm.setTemplate_id("模板Id");tm.setUrl("https://wwww.baidu.com");//about data startMap<String,Object> m = new HashMap<String,Object>(); TemplateData first = new TemplateData(); first.setColor("#000000"); first.setValue("您好,您有一個(gè)流程待辦需要處理:"); m.put("first", first); TemplateData keyword1 = new TemplateData(); keyword1.setColor("#000000"); keyword1.setValue("11111111111111"); m.put("keyword1", keyword1); TemplateData keyword2 = new TemplateData(); keyword2.setColor("#000000"); keyword2.setValue("愛(ài)你一萬(wàn)年"); m.put("keyword2", keyword2); TemplateData keyword3 = new TemplateData(); keyword3.setColor("#000000"); keyword3.setValue("2018.04.27 09:51:30"); m.put("keyword3", keyword3); TemplateData keyword4 = new TemplateData(); keyword4.setColor("#000000"); keyword4.setValue("不夠"); m.put("keyword4", keyword4); TemplateData remark = new TemplateData(); remark.setColor("#000000"); remark.setValue("再加一萬(wàn)年"); m.put("remark", remark); //about data endtm.setData(m);String jsonString = JSONObject.fromObject(tm).toString();System.out.println("jsonString:"+jsonString);return jsonString;}/*** 發(fā)送模板消息* appId 公眾賬號(hào)的唯一標(biāo)識(shí)* appSecret 公眾賬號(hào)的密鑰* openId 用戶標(biāo)識(shí)*/public void postTemplateMsg(String appId, String appSecret, String openId){Token token = CommonUtil.getToken(appId, appSecret);String access_token = token.getAccessToken();String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token;System.out.println("requestUrl:"+requestUrl);String jsonString = sendTemplateMessage(openId);JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST", jsonString);System.out.println("jsonObject="+jsonObject); if (null != jsonObject) { int errorCode = jsonObject.getInt("errcode"); if (0 == errorCode) { System.out.println("模板消息發(fā)送成功!"); } else { String errorMsg = jsonObject.getString("errmsg"); System.out.println("模板消息發(fā)送失敗,錯(cuò)誤碼是:"+errorCode+",錯(cuò)誤信息是:"+errorMsg); } } }/** * 類名: CommonUtil </br> * 描述: 通用工具類 </br> * 發(fā)布版本:V1.0 </br>*/ public class CommonUtil {// 憑證獲取(GET)public final static String token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";/*** 發(fā)送https請(qǐng)求* * @param requestUrl 請(qǐng)求地址* @param requestMethod 請(qǐng)求方式(GET、POST)* @param outputStr 提交的數(shù)據(jù)* @return JSONObject(通過(guò)JSONObject.get(key)的方式獲取json對(duì)象的屬性值)*/public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {JSONObject jsonObject = null;try {// 創(chuàng)建SSLContext對(duì)象,并使用我們指定的信任管理器初始化TrustManager[] tm = { new MyX509TrustManager() };SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, new java.security.SecureRandom());// 從上述SSLContext對(duì)象中得到SSLSocketFactory對(duì)象SSLSocketFactory ssf = sslContext.getSocketFactory();URL url = new URL(requestUrl);HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();conn.setSSLSocketFactory(ssf);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);// 設(shè)置請(qǐng)求方式(GET/POST)conn.setRequestMethod(requestMethod);// 當(dāng)outputStr不為null時(shí)向輸出流寫數(shù)據(jù)if (null != outputStr) {OutputStream outputStream = conn.getOutputStream();// 注意編碼格式outputStream.write(outputStr.getBytes("UTF-8"));outputStream.close();}// 從輸入流讀取返回內(nèi)容InputStream inputStream = conn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;StringBuffer buffer = new StringBuffer();while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}// 釋放資源bufferedReader.close();inputStreamReader.close();inputStream.close();inputStream = null;conn.disconnect();jsonObject = JSONObject.fromObject(buffer.toString());} catch (ConnectException ce) {System.out.println("連接超時(shí):"+ ce);} catch (Exception e) {System.out.println("https請(qǐng)求異常:"+ e);}return jsonObject;}/*** 獲取接口訪問(wèn)憑證* * @param appid 憑證* @param appsecret 密鑰* @return*/public static Token getToken(String appid, String appsecret) {Token token = null;String requestUrl = token_url.replace("APPID", appid).replace("APPSECRET", appsecret);System.out.println("requestUrl:"+requestUrl);// 發(fā)起GET請(qǐng)求獲取憑證JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);if (null != jsonObject) {try {token = new Token();token.setAccessToken(jsonObject.getString("access_token"));token.setExpiresIn(jsonObject.getInt("expires_in"));} catch (JSONException e) {token = null;// 獲取token失敗System.out.println("獲取token失敗 errcode:"+jsonObject.getInt("errcode")+"errmsg:"+jsonObject.getString("errmsg"));}}return token;}/*** URL編碼(utf-8)* @param source* @return*/public static String urlEncodeUTF8(String source) {String result = source;try {result = java.net.URLEncoder.encode(source, "utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}public static void main(String args[]) {//https://1d488f5d.ngrok.io/WeiXinProject/String source="https://565b4dad.ngrok.io/WeChatPublicNumber/oauthServlet";System.out.println(CommonUtil.urlEncodeUTF8(source));} }
over!
轉(zhuǎn)載于:https://www.cnblogs.com/YLQBL/p/8961224.html
總結(jié)
以上是生活随笔為你收集整理的微信公众号消息推送-模板消息发送的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 正则介绍_grep上 grep中 g
- 下一篇: jboss 反序列化 getshel