微信公众号Java开发记录(五)发送模板消息

编程入门 行业动态 更新时间:2024-10-09 12:24:39

微信<a href=https://www.elefans.com/category/jswz/34/1769853.html style=公众号Java开发记录(五)发送模板消息"/>

微信公众号Java开发记录(五)发送模板消息

文章目录

  • 一、设置所属行业
  • 二、获取设置的行业信息
  • 三、发送模板消息
    • 1.设置消息模板
    • 2.创建参数对象
      • 1.整体参数
      • 2.First参数
      • 3.keyword参数
      • 4.remark参数
    • 3.封装参数,转化json
    • 4.发送模板消息

微信公众平台_模板消息

一、设置所属行业

设置行业可在微信公众平台后台完成,每月可修改行业1次,帐号仅可使用所属行业中相关的模板,为方便第三方开发者,提供通过接口调用的方式来修改账号所属行业,具体如下:

接口调用请求说明

http请求方式: POST =ACCESS_TOKEN

POST数据说明
POST数据示例如下:

{
“industry_id1”:“1”,
“industry_id2”:“4”
}
参数说明:
参数 是否必须 说明
access_token 是 接口调用凭证
industry_id1 是 公众号模板消息所属行业编号
industry_id2 是 公众号模板消息所属行业编号


设置成功。
代码:

@Testpublic void test9(){//获取你自己的ACCESS_TOKENString redisToken = wxService.getRedisToken();String Url = "=ACCESS_TOKEN";String access_token = Url.replace("ACCESS_TOKEN", redisToken);String data="{\n" +"    \"industry_id1\":\"1\",\n" +"    \"industry_id2\":\"5\"\n" +"}";StringBuffer sb = null;try {
//            建立连接URL url = new URL(access_token);HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();httpUrlConn.setDoInput(true);httpUrlConn.setDoOutput(true);httpUrlConn.setRequestMethod("POST");//设置请求头   //设置参数类型是json格式httpUrlConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");//httpUrlConn.connect();     可要    可不要BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(httpUrlConn.getOutputStream(), "UTF-8"));writer.write(data);writer.close();// 获取输入流InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);// 读取返回结果sb = new StringBuffer();String str = null;while ((str = bufferedReader.readLine()) != null) {sb.append(str);}// 释放资源bufferedReader.close();inputStreamReader.close();inputStream.close();httpUrlConn.disconnect();} catch (Exception e) {e.printStackTrace();}System.out.println(sb);}

二、获取设置的行业信息

获取设置的行业信息
获取帐号设置的行业信息。可登录微信公众平台,在公众号后台中查看行业信息。为方便第三方开发者,提供通过接口调用的方式来获取帐号所设置的行业信息,具体如下:

接口调用请求说明

http请求方式:GET =ACCESS_TOKEN

参数说明

参数 是否必须 说明
access_token 是 接口调用凭证
返回说明

正确调用后的返回示例:

{
“primary_industry”:{“first_class”:“运输与仓储”,“second_class”:“快递”},
“secondary_industry”:{“first_class”:“IT科技”,“second_class”:“互联网|电子商务”}
}
返回参数说明

参数 是否必填 说明
access_token 是 接口调用凭证
primary_industry 是 帐号设置的主营行业
secondary_industry 是 帐号设置的副营行业


代码:

   /*** 获取设置的行业信息* 获取帐号设置的行业信息。可登录微信公众平台,在公众号后台中查看行业信息。为方便第三方开发者,提供通过接口调用的方式来获取帐号所设置的行业信息,具体如下:* 接口调用请求说明* http请求方式:GET =ACCESS_TOKEN*/@Testpublic void test10(){String redisToken = wxService.getRedisToken();String Url = "=ACCESS_TOKEN";String url = Url.replace("ACCESS_TOKEN", redisToken);httpClient(url, "Get", null);}public String httpClient(String Url,String RequestMethod,String data){StringBuffer sb = null;try {
//            建立连接URL url = new URL(Url);HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();httpUrlConn.setDoInput(true);httpUrlConn.setDoOutput(true);String s = RequestMethod.toUpperCase();httpUrlConn.setRequestMethod(s);httpUrlConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");if ("GET".equalsIgnoreCase(RequestMethod)){httpUrlConn.connect();}else {//设置请求头   //设置参数类型是json格式//httpUrlConn.connect();     可要    可不要BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(httpUrlConn.getOutputStream(), "UTF-8"));writer.write(data);writer.close();// 获取输入流}InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);// 读取返回结果sb = new StringBuffer();String str = null;while ((str = bufferedReader.readLine()) != null) {sb.append(str);}// 释放资源bufferedReader.close();inputStreamReader.close();inputStream.close();httpUrlConn.disconnect();} catch (Exception e) {e.printStackTrace();}System.out.println(sb);return sb.toString();}

三、发送模板消息

1.设置消息模板


参数实例:

 {"touser":"OPENID","template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY","url":"",  "miniprogram":{"appid":"xiaochengxuappid12345","pagepath":"index?foo=bar"},          "data":{"first": {"value":"恭喜你购买成功!","color":"#173177"},"keyword1":{"value":"巧克力","color":"#173177"},"keyword2": {"value":"39.8元","color":"#173177"},"keyword3": {"value":"2014年9月22日","color":"#173177"},"remark":{"value":"欢迎再次购买!","color":"#173177"}}}


注:url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

返回码说明

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

{
“errcode”:0,
“errmsg”:“ok”,
“msgid”:200228332
}
注意:在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。

2.创建参数对象

构建模板参数对象,然后将对象一步一步转成JSON形式。

1.整体参数

package com.wx.model.templatemessage;import lombok.Data;/*** @author :LiuShihao* @date :Created in 2020/10/12 2:00 下午* @desc :*/
@Data
public class WxTemplateMessage {private String touser;private String template_id  ;private String url;private String miniprogram;private String data;public WxTemplateMessage(String touser ,String template_id, String url,String data){this.touser = touser;this.template_id = template_id;this.url = url;this.data = data;}public WxTemplateMessage(){}
}

2.First参数

package com.wx.model.templatemessage;import lombok.Data;/*** @author :LiuShihao* @date :Created in 2020/10/12 2:55 下午* @desc :*/
@Data
public class First {private String value;private String color;public First(String value,String color){this.value = value;this.color = color;}
}

3.keyword参数

package com.wx.model.templatemessage;import lombok.Data;/*** @author :LiuShihao* @date :Created in 2020/10/12 2:55 下午* @desc :订单商品*/
@Data
public class Keyworld {private String value;private String color;public Keyworld(String value,String color){this.value = value;this.color = color;}public Keyworld(){}
}

4.remark参数

package com.wx.model.templatemessage;import lombok.Data;/*** @author :LiuShihao* @date :Created in 2020/10/12 2:56 下午* @desc :*/
@Data
public class Remark {private String value;private String color;public Remark(String value,String color){this.value = value;this.color = color;}}

由于Miniprogram没有用到该参数,所以省略,

3.封装参数,转化json

pom依赖

<!-- .sf.json-lib/json-lib --><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency>
First first = new First("尊敬的用户,恭喜您订购成功!","#173177");//订单商品Keyworld keyword1 = new Keyworld("iPhone 12 Pro Max 256G 海军蓝","#173177");//订单编号Keyworld keyword2 = new Keyworld("202010140315325205","#173177");//支付金额Keyworld keyword3 = new Keyworld("1299.00$","#173177");//支付时间Keyworld keyword4 = new Keyworld("2020年10月14日 03:15:32","#173177");Remark remark = new Remark("祝您生活愉快!","#173177");//将data参数对象 转化成json   这里使用的是net.sf.json-lib   使用阿里巴巴的fastjson也是可以的JSONObject first1 = JSONObject.fromObject(first);JSONObject keyword11 = JSONObject.fromObject(keyword1);JSONObject keyword21 = JSONObject.fromObject(keyword2);JSONObject keyword31 = JSONObject.fromObject(keyword3);JSONObject keyword41 = JSONObject.fromObject(keyword4);JSONObject remark1 = JSONObject.fromObject(remark);//构造进  data参数JSONObject templateData2 = new JSONObject();templateData2.put("first",first1);templateData2.put("keyword1",keyword11);templateData2.put("keyword2",keyword21);templateData2.put("keyword3",keyword31);templateData2.put("keyword4",keyword41);templateData2.put("remark",remark1);WxTemplateMessage wxTemplateMessage1 = new WxTemplateMessage(openID, "JIMtRhfmeks-H3f0dn_P0wcnBnqiTPIxl7uahiZqvHI", "/",null);//将请求参数对象  转化成 JSONJSONObject msgData = JSONObject.fromObject(wxTemplateMessage1);msgData.put("data",templateData2.toString());System.out.println(msgData);

4.发送模板消息

public String httpClient(String Url,String RequestMethod,String data){StringBuffer sb = null;try {
//            建立连接URL url = new URL(Url);HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();httpUrlConn.setDoInput(true);httpUrlConn.setDoOutput(true);String s = RequestMethod.toUpperCase();httpUrlConn.setRequestMethod(s);httpUrlConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");if ("GET".equalsIgnoreCase(RequestMethod)){httpUrlConn.connect();}else {//设置请求头   //设置参数类型是json格式//httpUrlConn.connect();     可要    可不要BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(httpUrlConn.getOutputStream(), "UTF-8"));writer.write(data);writer.close();// 获取输入流}InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);// 读取返回结果sb = new StringBuffer();String str = null;while ((str = bufferedReader.readLine()) != null) {sb.append(str);}// 释放资源bufferedReader.close();inputStreamReader.close();inputStream.close();httpUrlConn.disconnect();} catch (Exception e) {e.printStackTrace();}System.out.println(sb);return sb.toString();}@Test
public void test11(){//获得AccessTokenString redisToken = wxService.getRedisToken();String openID = "oCV_T6HEG-hy1-cZrp1aaK7NwmuI****";String url = "=ACCESS_TOKEN";String access_token = url.replace("ACCESS_TOKEN", redisToken);String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"));String serialNumber = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+(Math.random()*100000+"").substring(0,4);First first = new First("尊敬的用户,恭喜您订购成功!","#173177");//构造data参数对象//订单商品Keyworld keyword1 = new Keyworld("iPhone 12 Pro Max 256G 海军蓝","#173177");//订单编号Keyworld keyword2 = new Keyworld("202010140315325205","#173177");//支付金额Keyworld keyword3 = new Keyworld("1299.00$","#173177");//支付时间Keyworld keyword4 = new Keyworld("2020年10月14日 03:15:32","#173177");Remark remark = new Remark("祝您生活愉快!","#173177");//将data参数对象 转化成jsonJSONObject first1 = JSONObject.fromObject(first);JSONObject keyword11 = JSONObject.fromObject(keyword1);JSONObject keyword21 = JSONObject.fromObject(keyword2);JSONObject keyword31 = JSONObject.fromObject(keyword3);JSONObject keyword41 = JSONObject.fromObject(keyword4);JSONObject remark1 = JSONObject.fromObject(remark);//构造进  data参数JSONObject templateData2 = new JSONObject();templateData2.put("first",first1);templateData2.put("keyword1",keyword11);templateData2.put("keyword2",keyword21);templateData2.put("keyword3",keyword31);templateData2.put("keyword4",keyword41);templateData2.put("remark",remark1);//构造 请求参数对象WxTemplateMessage wxTemplateMessage1 = new WxTemplateMessage(openID, "JIMtRhfmeks-H3f0dn_P0wcnBnqiTPIxl7uahiZqvHI", "/",null);//将请求参数对象  转化成 JSONJSONObject msgData = JSONObject.fromObject(wxTemplateMessage1);msgData.put("data",templateData2.toString());System.out.println(msgData);httpClient(access_token, "POST", msgData.toString());}

更多推荐

微信公众号Java开发记录(五)发送模板消息

本文发布于:2024-02-14 02:12:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761535.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:公众   模板   消息   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!