公众平台开发(4)模板消息接⼝
⼀、添加消息模板
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的⼊⼝,但只有认证后的服务号才可以申请模板消息的使⽤权限并获得该权限;
2、需要选择公众账号服务所处的2个⾏业
3、在所选择⾏业的模板库中添加模板;
4、在我的模板中可以看到添加的模板(商家新订单提醒模板)
⼆、模板消息接⼝开发
access_token是的全局唯⼀票据,调⽤各接⼝时都需使⽤access_token,access_token的有效期是2⼩时。
模板消息需要使⽤access_token来授权。
1、获取access_token
接⼝地址:api.weixin.qq/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求⽅式:GET
返回的数据格式:json格式
1public  String getAccessToken(){
2            String requestUrl = "api.weixin.qq/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
3
4            String appid = "appid";//第三⽅⽤户唯⼀凭证
5
6            String secret = "appsecret";//    第三⽅⽤户唯⼀凭证密钥,即appsecret
7
8            place("APPID", appid);
9            place("APPSECRET", secret);
10
11            JSONObject jsonObject= CommonUtil.httpsRequestToJsonObject(requestUrl, "GET", null, false);
12
13            String access_token = String("access_token");
14
15return access_token;
16
17    }
2、模板
1public class Template {
2开发程序
3// 消息接收⽅
4private String toUser;
5// 模板id
6private String templateId;
7// 模板消息详情链接
8private String url;
9// 消息顶部的颜⾊
10private String topColor;
11// 参数列表
12private List<TemplateParam> templateParamList;
13//省略getter、setter⽅法
14
15//按接⼝要求格式化模板
16public String toJSON() {
17        StringBuffer buffer = new StringBuffer();
18        buffer.append("{");
19        buffer.append(String.format("\"touser\":\"%s\"", User)).append(",");
20        buffer.append(String.format("\"template_id\":\"%s\"", plateId)).append(",");
21        buffer.append(String.format("\"url\":\"%s\"", this.url)).append(",");
22        buffer.append(String.format("\"topcolor\":\"%s\"", pColor)).append(",");
23        buffer.append("\"data\":{");
24        TemplateParam param = null;
25for (int i = 0; i < plateParamList.size(); i++) {
26              param = (i);
27// 判断是否追加逗号
28if (i < plateParamList.size() - 1){
29
30                buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"},", Name(), Value(), Color()));
31            }else{
32                buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"}", Name(), Value(), Color()));
33            }
34
35        }
36        buffer.append("}");
37        buffer.append("}");
String();
39    }
40 }
3、发送模板消息,返回json格式结果
public  JSONObject  sendTemplateMsg(Template template){
//获取token
String token = AccessToken();
String requestUrl = "api.weixin.qq/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";
place("ACCESS_TOKEN", token);
if (log.isDebugEnabled()) {
log.JSON());
}
//发送模板消息,返回json格式结果
JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(requestUrl, "POST", JSON(),false);
return jsonObject;
}
三、实现效果
以订单⽀付成功通知为例:
构造消息实体:
1        String tplId = "whmJQfErBz_62Fu4ebCiDkz4u9hgBJOMolbLEwZDvh4";
2        Template tem=new Template();
3        tem.setTemplateId(tplId);
4        tem.setTopColor(SUCCESS_TOP_COLOR);
5
6        List<TemplateParam> paras=new ArrayList<TemplateParam>();
7        paras.add(new TemplateParam("first","您有⼀笔新订单,等待发货。","#333"));
8        paras.add(new TemplateParam("keyword1","T16081000152","#333"));
9        paras.add(new TemplateParam("keyword2","⽩菜套餐*1","#333"));
10        paras.add(new TemplateParam("keyword3","9.00元","#333"));
11        paras.add(new TemplateParam("keyword4","余额⽀付","#333"));
12        paras.add(new TemplateParam("keyword5","零零壹、12345678901","#333"));
13        paras.add(new TemplateParam("remark","请及时处理,感谢你对云农批的⽀持!!!","#333"));  14
15        tem.setTemplateParamList(paras);
16        tem.setToUser("openid");//⽤户openid
17//设置超链接
18        tem.Instance().getYnp_url());
19
20
21        JSONObject jsonObject = sendTemplateMsg(tem);
实现效果: