微信公众号推送的模板消息无法跳转到小程序指定页面?
发送模板消息
接口调用请求说明
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"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"
}
}
}
参数说明
参数 | 是否必填 | 说明 |
---|---|---|
touser | 是 | 接收者openid |
template_id | 是 | 模板ID |
url | 否 | 模板跳转链接(海外帐号没有跳转能力) |
miniprogram | 否 | 跳小程序所需数据,不需跳小程序可不用传该数据 |
appid | 是 | 所需跳转到的小程序appid(该小程序 appid 必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏) |
pagepath | 否 | 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏 |
data | 是 | 模板数据 |
color | 否 | 模板内容字体颜色,不填默认为黑色 |
注:url和 miniprogram 都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
返回码说明
在调用模板消息接口后,会返回 JSON 数据包。正常时的返回 JSON 数据包示例:
{
"errcode":0,
"errmsg":"ok",
"msgid":200228332
}
解决方案
第一种方式
"miniprogram":{
"appid":"wxda23313f1f458e76",
"pagePath "=>"pages/lst/lst",
"usePath" => false
},
第二种方式
"miniprogram":{
"appid":"wxda23313f1f458e76",
"pagepath "=>"pages/lst/lst",
"usepath" => false
},
第三种方式
"miniprogram":{
"appid":"wxda23313f1f458e76",
"pagepath "=>"pages/lst/lst",
},
部分代码实现
WxMpTemplateMessage.MiniProgram miniProgram = new WxMpTemplateMessage.MiniProgram();
miniProgram.setAppid("小程序appid");
miniProgram.setPagePath("跳转页面");
miniProgram.setUsePath(false);//必须要加上
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
// 接收者openid
.toUser("接收者openid")
// 模板id
.templateId("模板id")
// 模板跳转链接
.build();
// 添加模板数据
templateMessage.addData(new WxMpTemplateData("first", "xxx", "#FF00FF"))
.addData(new WxMpTemplateData("keyword1", "今日吃鸡", "#000000"))
.addData(new WxMpTemplateData("keyword2", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm"), "#000000"))
.addData(new WxMpTemplateData("remark", "请点击详情进行查看", "#000000"));
templateMessage.setMiniProgram(miniProgram);
try {
// 发送模板消息
wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
e.printStackTrace();
}