天天看點

【踩坑系列】發送微信模闆消息傳回40165 invalid weapp pagepath

作者:面試指導

1. 踩坑經曆

最近做了個需求,需要往公司微信公衆号推送一個模闆消息,并且點選該消息需要跳轉到公司小程式的某個頁面。

1.1 拿到模闆id

既然是發送模闆消息,第一步就需要登入微信公衆号背景建立模闆消息,拿到模闆id。

登入位址:mp.weixin.qq.com

建立模闆消息的方法如下所示:

1)在左側“廣告與服務”菜單下找到“模闆消息”菜單

【踩坑系列】發送微信模闆消息傳回40165 invalid weapp pagepath

2)點選”從曆史模闆庫中添加“按鈕

【踩坑系列】發送微信模闆消息傳回40165 invalid weapp pagepath

3)找到合适的模闆後,點選”詳情”,打開模闆詳情頁

【踩坑系列】發送微信模闆消息傳回40165 invalid weapp pagepath

4)在模闆詳情頁點選”添加“按鈕,将模闆添加到自己的公衆号中

【踩坑系列】發送微信模闆消息傳回40165 invalid weapp pagepath

5)添加完成後,就可以拿到模闆id

【踩坑系列】發送微信模闆消息傳回40165 invalid weapp pagepath

1.2 調用發送模闆消息接口

模闆消息接口文檔:

developers.weixin.qq.com/doc/offiacc…

發送模闆消息接口:

api.weixin.qq.com/cgi-bin/mes…

按照接口文檔要求,最終調用接口的請求封包大緻如下所示:

{
    "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
}
複制代碼           

說點别的,因為發送微信模闆消息跳轉小程式有上面的這個問題,是以在做這種需求時,業務系統最好加個配置開關,上線時,先關閉該

開關,等小程式稽核通過成為正式版後,再打開開關,不然在這之前的推送會全部失敗。

繼續閱讀