【踩坑系列】傳送微信模板訊息返回40165 invalid weapp pagepath

2023-04-04 21:00:52

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
}

說點別的,因為傳送微信模板訊息跳轉小程式有上面的這個問題,所以在做這種需求時,業務系統最好加個設定開關,上線時,先關閉該

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

文章持續更新,歡迎關注微信公眾號「申城異鄉人」第一時間閱讀!