微信公众号模板消息无法跳转到指定小程序页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众号模板消息无法跳转到指定小程序页面相关的知识,希望对你有一定的参考价值。

参考技术A 最近做了一个需求在公众号网页推送的模板消息,连接跳转到关联小程序,遇到总是跳转到首页的问题。说一下里面的坑

后端是php进 行消息发送  官方发送数据例子如下:

最开始 为了构造一个json数据格式,

第一步:我是先把 数据构造成一个多维数组 $arr,

第二步:$json_data  = json_encode($arr),然后再  $json = urldecode($json_data);

第三步:再然后 就是 通过  curl_init 进行发送了,这里不再详述。

接下来有个坑,发送不成功,错误信息 如下

“errcode”:40165,“errmsg”:"invalid weapp pagepath

百度下,很快有了答案,说官方文档有误,把 pagepath 改为 path 即可,我试了下,果然可以,消息推送正常,开心坏了!

奇怪的事情发生了,点击推送消息后没有跳转到小程序指定页面,一直是首页!

然后百度搜索各种答案,有说  路径参数名,改为 page(试了下居然可以),有的说 为 pagepath(这不是刚跳出来的坑吗?为啥别人居然可以成功发送?)

经过各种测试终于发现问题所在,第二步有问题!json_encode() 把原来数组中的路径 斜杠转义了!  'pages/auth/auth?id=6'   变成了  'pages\/auth\/auth?id=6'  难怪找不到路径!

后来看了下手册,有防止 json_encode() 转义 斜杠的参数  

JSON_UNESCAPED_SLASHES (不转义斜杠,对应的数字 64)

然后把第二步  改为   $json_data  = json_encode($arr, JSON_UNESCAPED_SLASHES )

还得把  页面参数由 path  改为   pagepath (不改会报错!)

再发送消息就可以正常接收并跳转到指定小程序页面啦!下面是我的构造的正确的多维数组格式

微信公众号中跳转到小程序中,通过api

参数是否必须说明button是一级菜单数组,个数应为1~3个sub_button否二级菜单数组,个数应为1~5个type是菜单的响应动作类型,view表示网页类型,click表示点击类型,miniprogram表示小程序类型name是菜单标题,不超过16个字节,子菜单不超过60个字节keyclick等点击类型必须菜单KEY值,用于消息接口推送,不超过128字节urlview、miniprogram类型必须网页链接,用户点击菜单可打开链接,不超过1024字节。type为miniprogram时,不支持小程序的老版本客户端将打开本url。media_idmedia_id类型和view_limited类型必须调用新增永久素材接口返回的合法media_idappid

miniprogram类型必须小程序的appid(仅认证公众号可配置)

pagepath

miniprogram类型必须小程序的页面路径

以上是关于微信公众号模板消息无法跳转到指定小程序页面的主要内容,如果未能解决你的问题,请参考以下文章

h5页面点击按钮如何跳转到微信公众号,没关注则关注

h5如何跳转到微信公众号页面?

小程序可以跳转网页么

记一次从公众号文章跳转小程序页面异常的问题

在 微信网站的H5页面中 怎么实现关注公众号

简单使用Java实现微信公众号推送模板消息