微信小程序订阅消息推送
一、创建消息模板
二、获取模板消息的参数
点击模板消息详情查看模板消息参数。
三、获取openId
先拿到用户的openId(如已获取,则跳过)。
3.1 前端从小程序获取登录凭证code
前端先从小程序端拿到用户code,然后将code传给后端进行解析。 官方文档: 示例代码:
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: https://example.com/onLogin,
data: {
code: res.code
}
})
} else {
console.log(登录失败! + res.errMsg)
}
}
})
3.2 后端解析code,拿到openId
官方文档: 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。 请求地址:
Java代码如下:
其中,WechatAppToken是根据小程序接口返回值建的一个类:
@Data
public class WechatAppToken {
public Integer errcode;
public String errmsg;
public String openid;
public String sessionKey;
public String unionId;
}
四、获取access_token
官方文档: 获取小程序全局唯一后台接口调用凭据(access_token)。调用绝大多数后台接口时都需使用 access_token,开发者需要进行妥善保存。 请求地址:
Java代码如下:
五、发送消息
官方文档: 发送订阅消息。 请求地址:
需要注意的是,该接口是有次数限制的。 开通支付能力的是3kw/日,没开通的是1kw/日。
Java代码:
其中WxMsgDto 类代码如下:
@Data
public class WxMsgDto {
/**
* 接收者(用户)的 openid
*/
private String touser;
/**
* 所需下发的订阅模板id
*/
private String template_id;
/**
* 点击模板卡片后的跳转页面,仅限本小程序内的页面
*/
private String page = "pages/index/index";
/**
* 模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }
*/
private Map<String, WxTemplateDataDto> data;
}
WxTemplateDataDto 代码如下:
@Data
@AllArgsConstructor
public class WxTemplateDataDto {
private String value;
}
