1. 踩坑经历

最近做了个需求,需要往公司微信公众号推送一个模板消息,并且点击该消息需要跳转到公司小程序的某个页面。

1.1 拿到模板id

既然是发送模板消息,第一步就需要登录微信公众号后台新建模板消息,拿到模板id。

登录地址:https://mp.weixin.qq.com

新建模板消息的方法如下所示:

1)在左侧“广告与服务”菜单下找到“模板消息”菜单

2)点击”从历史模板库中添加“按钮

3)找到合适的模板后,点击”详情”,打开模板详情页

4)在模板详情页点击”添加“按钮,将模板添加到自己的公众号中

5)添加完成后,就可以拿到模板id

1.2 调用发送模板消息接口

模板消息接口文档:

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html

发送模板消息接口:

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=

按照接口文档要求,最终调用接口的请求报文大致如下所示:

{
"template_id":"RJr0LvTwWtwKNNeorUtfBF-ClwCRCB9GAfO55H6DjtE",
"touser":"oYLSx0S7Oci-kbNIrPA461q9g1iE",
"data":{
"first":{
"color":"",
"value":"尊敬的客户,感谢您选择****,\n以下为*****交易风险提示"
},
"keyword1":{
"color":"",
"value":"沪C88V88"
},
"keyword2":{
"color":"",
"value":"2023年03月28日 15:56"
},
"keyword3":{
"color":"",
"value":"*****交易风险提示\n为保障您的财产安全,谨防法律风险,***提醒您,请遵循平台交易流程,切勿与任何非平台第三方单独/私下交易,\n如您遇到有****买家或员工向您表示想私下交易的,可向平台进行举报,经查证属实可获奖励 800 元/单。\n"
},
"remark":{
"color":"#fe2d46",
"value":"如需举报,请点击本条消息 >>>"
}
},
"miniprogram":{
"appid":"wx356234er34567dv",
"pagepath":"pages/order/detail?id=23"
}
}

说明:

1)如果模板消息中的内容需要换行,如上面的first里的内容,可以使用换行符\n。

2)如果模板消息中的内容需要自定义字体颜色,如上面的remark里的内容,可以给color赋值为自定义的颜色。

提测后,测试反馈一直收不到微信模板消息,查看日志后,发现调用发送模板消息接口后,一直返回40165这个错误码,消息未发送成功。

响应报文如下所示:

{
"errcode":40165,
"errmsg":"invalid weapp pagepath rid: 64229d9f-2e863b15-2db557df"
}

2. 原因分析

看到40165这个错误码,想先去微信接口文档中查找下这个错误码的说明,结果文档中并没有找到,

然后根据errmsg的提示猜测可能是小程序的跳转地址,微信识别不了,所以代码先把跳转小程序的部分注释了,再次发送,

发现消息发送成功了,证实消息发送失败确实是因为小程序跳转地址导致的。

和前端沟通后,得知这个跳转地址,是本次需求新加的,处于小程序的开发版中,小程序正式版中暂时没有该地址,

所以导致发送微信模板消息一直报这个错。

3. 解决方案

经过证实,不管小程序是开发版,还是体验版,只要不是正式版,新加的这个页面地址,发送微信模板消息就是识别不了,

一直返回40165这个错误码,直到小程序审核通过成为正式版后,这个地址才被识别,发送消息终于成功了:

{
"errcode":0,
"errmsg":"ok",
"msgid":2868541260507217920
}

说点别的,因为发送微信模板消息跳转小程序有上面的这个问题,所以在做这种需求时,业务系统最好加个配置开关,上线时,先关闭该

开关,等小程序审核通过成为正式版后,再打开开关,不然在这之前的推送会全部失败。

文章持续更新,欢迎关注微信公众号「申城异乡人」第一时间阅读!

【踩坑系列】发送微信模板消息返回40165 invalid weapp pagepath的更多相关文章

  1. 应用jfinal发送微信模板消息的一个bug

    严格来讲,这不是一个bug,只是我们应用的方式不对.微信发送模板消息的方法是: HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessTokenStr ...

  2. ThinkPHP3.2.3发送微信模板消息

    一.开通模板消息功能 所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限:需要选择公众账号服务所处的2个行业,每月可 ...

  3. php 实现发送微信模板消息(转)

    <?php namespace Org\Weixin; /** * Created by PhpStorm. * User: StandOpen * Date: 15-1-7 * Time: 9 ...

  4. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  5. C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是"模板消息"的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信 ...

  6. 前后端分离djangorestframework—— 接入微信模板消息推送

    微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...

  7. java开发微信模板消息推送

    发布时间:2018-12-12   技术:springboot+maven   概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...

  8. 5分钟连续出现某现象+微信模板消息提醒 PHP

    需求场景:用电插座电流连续出现5次电流过高(大于 3A)后停止用电服务,前四次发送电流过高提醒,最后一次发送结束用电服务提醒 思路: Redis  key 设为:插座编号+user户编号  value ...

  9. jmeter踩坑系列

    1.踩坑系列一: 抓包出来有host的字段,放到jmeter里面一起请求就报错了,去掉就请求正常了 1.踩坑系列二: 从花瓶复制过去 的values 前面有空格,肉眼看起来没有

  10. WebGL 踩坑系列-3

    WebGL 踩坑系列-3 绘制球体 在 WebGL 中绘制物体时需要的顶点是以直角坐标表示的, 当然了,gl_Position 是一个四维的向量,一般将顶点赋值给 gl_Position 时,最后一维 ...

随机推荐

  1. Mac截网页长屏的方法-谷歌浏览器

    打开chrome,左上角帮助,输入[开发者工具],回车,右边显示出一些html代码, 然后shift+command+p: 输入full,选择第一个capture full size screensh ...

  2. Linux_ZABBIX实战

    typora-copy-images-to: img ZABBIX实战 zabbix安装 Zabbix详解 zabbix中文社区: http://www.zabbix.org.cn/ Zabbix中文 ...

  3. DP-最大子矩阵

    1768:最大子矩阵 题目描述: 描述已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵比如,如下4 * 4的矩阵 0 -2 -7 09 2 ...

  4. 据库连接中useSSL

    在进行数据库连接时: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/db?useSSL=false&am ...

  5. jquery 时间戳转化为日期时间格式,年月日 时分秒

    <script type="text/javascript"> var strDate = ''; $(function(){ // 获取时间戳 时间戳为10位需*10 ...

  6. NFS只能挂载为nobody的解决办法

    方法一 mount中指定参数 mount -t nfs -o vers=3 192.168.23.23:/data1 /data1 这种方法不推荐,但可以解决临时挂载的需求 方法二 cat /etc/ ...

  7. CGAL的demo运行的步骤

    首先使用CMake,找到demo的源文件目录,并且指定生成文件目录: 点击configur,done 点击generate,done 找到build目录中的.sln 文件,打开 ALL_BUILD 生 ...

  8. Windows 10 输入法(仅桌面) %100 解决

    大家好,今天我遇到了一件非常难受的一件事,那就是 WIndows 自带的输入发问题,无法输入中文!!! 这时我去网上找找解决方案,总结了一下几个: 文件检查 步骤 以管理员身份运行PowerShell ...

  9. Swagger UI教程 API 文档神器 搭配Node使用 web api 接口文档 (转)

    http://www.68idc.cn/help/makewebs/qitaasks/20160621620667.html 两种方案 一.Swagger 配置 web Api 接口文档美化 二.通过 ...

  10. jquery input标签的禁用和启用disabled

    input框使用disabled后 input 元素既不可用,也不可点击.可以设置 disabled 属性,直到满足某些其他的条件为止(比如选择了一个复选框等等).然后,就需要通过 JavaScrip ...