首页 > 其他分享 >微信公众号开发之模板消息

微信公众号开发之模板消息

时间:2023-01-16 16:32:12浏览次数:51  
标签:return String 微信 公众 消息 public 模板

 欢迎留言、转发

微信极速开发系列文章:​​点击这里​

最近有点小感冒,文章的更新进度延误了一些,希望此系列文章对你​​研究微信公众开发​​​有帮助。前几篇文章介绍了微信支付。 ​​公众号支付​​​、​​微信扫码支付​​​、​​刷卡支付​​​、​​微信买单​

此文来聊聊微信中的业务通知----微信模板消息

如何查看是否有权限

在交流群中,总是有人问​​个人订阅号​​​、​​认证的订阅号​​​、​​服务号​​​ 、​​认证的服务号​​ 某个接口是否有权限使用。

其实这个问题很简单,在​​【微信公众平台】​​​现在已经可以直接查看​​自己​​的公众号都能使用那些接口。

登录​​【微信公众平台】​​进入首页>开发>接口权限

 

微信公众号开发之模板消息_json

模板消息-权限.png

添加模板消息插件

注意必须是认证的服务号

登录​​【微信公众平台】​​进入首页>添加插件功能>找到模板消息按照指引流程操作即可。

模板消息接口使用规则

官方文档 ​​发送消息-模板消息接口​​​ 以及 ​​模板消息运营规范​

关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。

添加模板消息

按照上文​​添加模板消息插件​​​之后​​【微信公众平台】​​​首页左侧栏就会出现​​模板消息​​菜单,收取点击进去需要同意协议并设置公众账号服务所处的2个行业。

以上设置好了就可以通过关键词查模板库中已有的模板,如果没有找到可以自己申请。

 

微信公众号开发之模板消息_json_02

模板消息-添加模板.png

找到合适的模板消息点击详情,进去查看模板详情,如果需要添加即可。添加完成会在我的模板中生成模板消息的 ​​模板ID​​​,​​模板ID​​在后面会用到。

 

微信公众号开发之模板消息_模板消息_03

模板消息-模板详情.png

测试号添加模板消息

 

微信公众号开发之模板消息_微信_04

测试号添加模板消息.png

 

微信公众号开发之模板消息_模板消息_05

测试号添加模板消息.png

模板消息接口的使用

客观前面都是一些准备工作,端杯茶耐心往下看。先来点实际的看看开源项目中封装的接口是如何使用的。

​com.javen.weixin.controller.WeixinMsgController.java​

 

微信公众号开发之模板消息_模板消息_06

模板消息的使用.png

 

微信公众号开发之模板消息_微信_07

接收到的通知

模板消息的封装

​官方参考文档​​​ 具体实现 ​​com.jfinal.weixin.sdk.api.TemplateMsgApi.java​

public class TemplateMsgApi {

private static String sendApiUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";

/**
* 发送模板消息
* @param jsonStr json字符串
* @return {ApiResult}
*/
public static ApiResult send(String jsonStr) {
String jsonResult = HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessToken().getAccessToken(), jsonStr);
return new ApiResult(jsonResult);
}
}

json数据的封装

​com.jfinal.weixin.sdk.api.TemplateData.java​

public class TemplateData {

private String touser;
private String template_id;
private String url;
private String topcolor;
private TemplateItem data;

public static TemplateData New() {
return new TemplateData();
}

private TemplateData() {
this.data = new TemplateItem();
}

public String getTouser() {
return touser;
}

public TemplateData setTouser(String touser) {
this.touser = touser;
return this;
}

public String getTemplate_id() {
return template_id;
}

public TemplateData setTemplate_id(String template_id) {
this.template_id = template_id;
return this;
}

public String getUrl() {
return url;
}

public TemplateData setUrl(String url) {
this.url = url;
return this;
}

public String getTopcolor() {
return topcolor;
}

public TemplateData setTopcolor(String topcolor) {
this.topcolor = topcolor;
return this;
}

public TemplateItem getData() {
return data;
}

public TemplateData add(String key, String value, String color){
data.put(key, new Item(value, color));
return this;
}

/**
* 直接转化成jsonString
* @return {String}
*/
public String build() {
return JsonUtils.toJson(this);
}

public class TemplateItem extends HashMap<String, Item> {

private static final long serialVersionUID = -3728490424738325020L;

public TemplateItem() {}

public TemplateItem(String key, Item item) {
this.put(key, item);
}
}

public class Item {
private Object value;
private String color;

public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}

标签:return,String,微信,公众,消息,public,模板
From: https://blog.51cto.com/u_15689678/6010531

相关文章

  • 二分算法查找模板
    这个是acwing站长YXC的模板https://www.acwing.com/file_system/file/content/whole/index/content/3073/版本1当我们将区间[l,r]划分成[l,mid]和[mid+1,r]时,其更......
  • 2023.1.16[模板]BSGS/exBSGS
    2023.1.16[模板]BSGS/exBSGS全称BoyStepGirlStep给定一个质数p,以及一个整数a,一个整数b,现在要求你计算一个最小的非负整数l,满足\(a^x\equivb(modp)\)算法......
  • border树模板
    P5829【模板】失配树关键这里的前缀和后缀是不能包含自己的,其他就是板子代码#include<bits/stdc++.h>usingnamespacestd;constintM=1e6+5;chars[M];intne......
  • effective modern c++ - 1 理解模板类别推导
    模板中的行参类型推断会省略引用在这两种模板中,行参的引用都会在推断过程中被省略template<typenameT>//templateAvoidf(T&param);template<typenameT>//temp......
  • 模板-mod类
    模板intMOD;//constintMOD=;structModInt{intx;ModInt(intx=0):x(x%MOD){}ModInt(longlongx):x(x%MOD){}intval(){......
  • 常用算法模板
    BFS单向BFS不记录层数whilequeue不空:cur=queue.pop()for节点incur的所有相邻节点:if该节点有效且未访问过:queue.push(该节点)......
  • P1886 滑动窗口 /【模板】单调队列
    滑动窗口/【模板】单调队列题目描述有一个长为\(n\)的序列\(a\),以及一个大小为\(k\)的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的......
  • 区间dp模板
    该死的csdn登陆不上去了,为了防止区间dp模板丢失,在这里再存一份然后是左右取数字的问题,我记得20年的时候我应该看过这题,是有一个数列,前后取若干个数字,问先手能取最大值那......
  • 微信小程序自定义字体
    微信小程序自定义字体  解决方法 //加载字体wx.loadFontFace({global:true,family:'cl',......
  • 上传微信素材的两种方式
    ///<summary>///上传微信素材的两种方式///</summary>///<returns></returns>publicasyncTask<IActionResult>UploadL......