前言:
這個問題支付寶小程序官方文檔並沒有專門說明,釘釘群的官方技術支持給了個開發者社區的帖子,詳見:如何跳轉小程序。
如果配置的頁面沒有參數還好,不會出問題,如果有參數,很可能配出來的鏈接無法正常獲取到攜帶參數的,坑在這里:
1.page參數:剛開始以為是頁面path路徑(也就是app.json中的路徑),因為后邊還有query參數,理所當然的會認為這里只需要path;
2.query參數:雖然看到“啟動參數”四個字,但是這種路徑沒有配過小程序app的啟動參數的,微信小程序也不是這么玩的,所以這里就理所當然的被認為是頁面參數了;
然后拼接出來的路徑是這樣的:
window.location.href="alipays://platformapi/startapp?appId=xxx&page=pages/goodDetail/goodDetail&query=goods_id%3d101"
很顯然,這樣是無法正常獲取頁面參數了。經驗證,上邊的鏈接拼接中缺少了頁面參數的部分,這部分需要轉碼后追加在頁面path后邊。
正確操作:
//有頁面參數(沒有啟動參數)
location.href = "alipays://platformapi/startapp?appId=xxx&page=pages/goodDetail/goodDetail"+encodeURIComponent("?goods_id="+goods_id)
//有頁面參數,有啟動參數(如渠道號、平台號等打開小程序就需要傳過來的參數)
location.href = "alipays://platformapi/startapp?appId=xxx&page=pages/goodDetail/goodDetail"+encodeURIComponent("?goods_id="+goods_id)+&query=encodeURIComponent("appParams="+xx)
總結:
官方文檔突出了啟動參數,卻壓根兒沒提頁面參數,初次接觸,踩坑難免,畢竟支付寶小程序還在成長中,我們自己也得多多實踐,多多嘗試。
后記:
除了上述方法,還可以獲取小程序頁面的https鏈接,詳見如何獲取支付寶小程序頁面的https鏈接。