一、基础概念:
准备条件:
1、公众号和小程序必须在同一个公司主体下。
2、在公众号后台需要对小程序进程绑定操作。
公众号提供了两种消息,一种是订阅消息,一种是模板消息。
订阅消息需要用户主动订阅,然后才能接收消息,微信提供前端组件用于用户进行订阅。
模板消息,用户只需要关注公众号,就能发送消息给用户。
本文主要介绍后台服务器接入微信openapi发送模板消息。
登录公众号后台,查看模板消息,进行模板消息选择,如果没有模板消息选项,则需要在更多功能和设置中进行模板消息的开通。
二、接入微信OpenApi 发送模板消息。
微信开发文档相关地址:下发统一消息 | 微信开放文档
使用:
https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN
进行消息的发送。access_token 采用微信小程序提供的获取token的api获取
获取token的api:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET
统一发送消息的的参数说明:
小程序模板消息已经下架,我们使用公众号的消息模板。
参数中,miniprogram是一个关于小程序的结构体,子参数有小程序的appId 和小程序的指定页面,用于用户点击消息,跳转到相应的小程序。
miniprogram未指定的情况下,指定了URL,则点击消息,则会跳转到URL指定的页面。
data参数根据你使用的模板进行参数设置。
基本结构参数如下:
token,参数都组装好后,就可以通过http请求给关注公众号的相应用户发送消息。
三、接入相关代码
1、参数实体
@Data
public class WechatOAMsg implements Serializable {
private static final long serialVersionUID = -1012245204329270134L;
/**
* openid
*/
private String touser;
/**
* 公众号模板消息相关的信息
*/
private MpTemplateMsg mp_template_msg;
@Data
public static class MpTemplateMsg{
/**
* 公众号appid,要求与小程序有绑定且同主体
*/
private String appid;
/**
* 消息模板ID
*/
private String template_id;
/**
* 公众号模板消息所要跳转的url
*/
private String url;
/**
* 公众号模板消息所要跳转的小程序,小程序的必须与公众号具有绑定关系
*/
private Map<String,String> miniprogram;
/**
* 公众号模板消息的数据,消息json
*/
private Map<String,Map<String,String>> data;
}
}
2、返回接收
@Data
public class WechatOAResult implements Serializable {
private static final long serialVersionUID = -8530125244567710894L;
/**
* 返回码
*/
private Integer errcode;
/**
* 消息体
*/
private String errmsg;
}
3、发送方法
/**
* 发送微信公众号消息
* @param wechatOAMsg
* @return
*/
public WechatOAResult sendWechatOAMsg(WechatOAMsg wechatOAMsg){
String postData = JsonUtil.toJsonString(wechatOAMsg);
String token = getAccessToken(2);
String getOpenUrl = weChatConfiguration.getSendMsgUrl();
getOpenUrl = getOpenUrl.replace("ACCESS_TOKEN",token);
if (null != postData) {
//http 调用第三方接口
log.info("send Wechat msg Url :{} postData:{} ", getOpenUrl,postData);
String result = HttpUtil.post(getOpenUrl, postData);
log.info("send wechat msg result:"+result);
WechatOAResult wechatOAResult = JsonUtil.parseObject(result,WechatOAResult.class);
return wechatOAResult;
}
return null;
}
其他相关业务代码,请自行补全。
版权归原作者 justforglory 所有, 如有侵权,请联系我们删除。