開(kāi)發(fā)過(guò)程中經(jīng)常遇到支付寶小程序跳轉(zhuǎn)的問(wèn)題,這里總結(jié)一下支付寶小程序跳轉(zhuǎn)的常見(jiàn)場(chǎng)景和方式,希望可以對(duì)大家有所幫助。
話不多說(shuō),上干貨!
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-711007.html
?
?
?
?
支付寶小程序跳轉(zhuǎn)的三種行為
支付寶小程序跳轉(zhuǎn)可以拆分為三種行為,即:
- 外部跳轉(zhuǎn)支付寶小程序
- 支付寶小程序內(nèi)部頁(yè)面之間跳轉(zhuǎn)
- 支付寶小程序內(nèi)部跳轉(zhuǎn)到外部
?
一、外部跳轉(zhuǎn)小程序
外部跳轉(zhuǎn)小程序場(chǎng)景有很多種,接下來(lái)將對(duì)其逐一剖析。
?
1. 二維碼跳轉(zhuǎn)小程序
二維碼跳轉(zhuǎn)小程序分為「小程序碼」與「關(guān)聯(lián)普通鏈接二維碼」。
- 小程序碼:商家通過(guò) 小程序碼(原小程序二維碼)可生成跳轉(zhuǎn)自身小程序指定頁(yè)面二維碼,可用于線上線下貼碼推廣,便捷推廣小程序。?
?
?
?
?
- 普通鏈接二維碼:商家的開(kāi)發(fā)者自行對(duì)網(wǎng)頁(yè)鏈接進(jìn)行編碼后生成的二維碼,也就是我們最常見(jiàn)的二維碼。
1.1. 小程序碼
適用場(chǎng)景
- 支付寶首頁(yè)「掃一掃」跳轉(zhuǎn)小程序。
- 二維碼鏈接跳轉(zhuǎn)小程序(其它 APP/瀏覽器、H5 頁(yè)面,支付寶端內(nèi)等都可以使用,適用于三方 APP&瀏覽器跳轉(zhuǎn)小程序)。
參數(shù)獲取
app.js 中 onLaunch/onShow 啟動(dòng)函數(shù):options.query.key 獲?。?strong>經(jīng)驗(yàn):注意做 熱啟動(dòng)和冷啟動(dòng) 兼容處理)。
-
冷啟動(dòng):當(dāng)用戶打開(kāi)未啟動(dòng)過(guò),或者是已經(jīng)銷毀的小程序時(shí),稱為冷啟動(dòng)。此時(shí)小程序會(huì)執(zhí)行初始化,初始化完成后,會(huì)觸發(fā)
onLaunch
回調(diào)函數(shù)。
熱啟動(dòng):當(dāng)用戶打開(kāi)已經(jīng)關(guān)閉但仍處于后臺(tái)運(yùn)行的小程序時(shí),稱為熱啟動(dòng)。在這種情況下,小程序并不會(huì)被銷毀后重啟,而僅是從后臺(tái)切換到前臺(tái),此時(shí),onShow
函數(shù)會(huì)觸發(fā),onLaunch
回調(diào)函數(shù)不會(huì)被觸發(fā)。
App({ onLaunch(options) { my.alert({ content: '啟動(dòng)參數(shù):'+JSON.stringify(options.query.key), }); console.log('query', options.query); console.log('App Launch', options); }, onShow() { console.log('App Show') }})
?
1.2. 關(guān)聯(lián)普通鏈接二維碼
適用場(chǎng)景
只能通過(guò)支付寶首頁(yè)掃一掃跳轉(zhuǎn)小程序。
參數(shù)獲取
app.js 中 onLaunch/onShow 啟動(dòng)函數(shù):options.query.qrCode 獲?。ㄗ⒁庾鰺釂?dòng)和冷啟動(dòng)兼容處理)。
示例代碼
onLaunch(options){ my.alert({ title: 'app onLaunch', content: JSON.stringify(options), success: (res) => { //成功處理代碼段 }, }); //獲取關(guān)聯(lián)普通二維碼的碼值,放到全局變量qrCode中 if (options.query && options.query.qrCode) { this.qrCode = options.query.qrCode; } }
注意:普通關(guān)聯(lián)二維碼測(cè)試需要先發(fā)布配置規(guī)則,使用規(guī)則自行生成二維碼來(lái)測(cè)試跳轉(zhuǎn)(不要使用配置時(shí)的第二步測(cè)試二維碼測(cè)試)。
?
2. 支付寶 URL Scheme 跳轉(zhuǎn)小程序
具體拼接和參數(shù)入?yún)?獲取可查看 如何跳轉(zhuǎn)小程序(啟動(dòng)參數(shù)獲取和二維碼一致,注意做熱啟動(dòng)和冷啟動(dòng)兼容處理)。
- H5 頁(yè)面跳轉(zhuǎn)小程序
- 生活號(hào)場(chǎng)景如何跳轉(zhuǎn)小程序
- 支付寶卡包跳轉(zhuǎn)小程序
- 其它 APP/瀏覽器跳轉(zhuǎn)小程序(適用于釘釘、高德、淘寶、其它三方可跳轉(zhuǎn) APP、瀏覽器等)
- 商家會(huì)員卡跳轉(zhuǎn)小程序
獲取參數(shù)示例(與小程序碼相同)
App({ onLaunch(options) { my.alert({content: '啟動(dòng)參數(shù):'+JSON.stringify(options.query.key),}); console.log('query', options.query); console.log('App Launch', options); }, onShow() { console.log('App Show') }})
?
3. 小程序跳轉(zhuǎn)小程序
小程序跳轉(zhuǎn)小程序可使用 my.navigateToMiniProgram 接口。
適用場(chǎng)景
- 同主體其它小程序跳轉(zhuǎn)小程序:同主體小程序可直接互跳,無(wú)需任何設(shè)置。支付寶客戶端 10.1.10 及以上版本支持。
- 其它主體小程序跳轉(zhuǎn)小程序:
- 需對(duì)方登錄支付寶開(kāi)放平臺(tái)在 小程序詳情頁(yè) > 開(kāi)發(fā)服務(wù) > 開(kāi)發(fā)設(shè)置 > 基礎(chǔ)設(shè)置 > 小程序相互跳轉(zhuǎn) 中設(shè)置為 允許所有小程序跳轉(zhuǎn) 或 指定小程序跳轉(zhuǎn)。支付寶客戶端 10.1.25 及以上版本支持。
參數(shù)獲取
在目標(biāo)小程序的 App.onLaunch()/App.onShow()
啟動(dòng)參數(shù) extraData
中獲取數(shù)據(jù)(注意做熱啟動(dòng)和冷啟動(dòng)兼容處理)。
獲取示例
App({ onLaunch(options) { my.alert({content: '啟動(dòng)參數(shù):'+JSON.stringify(options.extraData.key),}); console.log('query', options.extraData); console.log('App Launch', options); }, onShow() { console.log('App Show') }})
?
4. 其它場(chǎng)景跳轉(zhuǎn)小程序
4.1. 模板消息跳轉(zhuǎn)小程序
帶參
詳情可查看 模板消息跳轉(zhuǎn)小程序帶參。
獲取參數(shù)
由于模板消息的參數(shù)是拼接在 path 后面?zhèn)魅?,獲取參數(shù)和小程序頁(yè)面之間跳轉(zhuǎn)帶參一致,在對(duì)應(yīng)頁(yè)面 Page.onLoad(query) 啟動(dòng)函數(shù) query 中獲取。
獲取示例代碼
onLoad(query) { if (query) { my.alert({ content: '啟動(dòng)參數(shù):' + JSON.stringify(query.x) }); }}
4.2. 分享鏈接跳轉(zhuǎn)小程序
具體接入使用可查看 小程序自定義分享,這里只說(shuō)明帶參和獲取參數(shù)。
注意:如果分享的頁(yè)面依賴上一頁(yè)跳轉(zhuǎn)時(shí)傳遞的參數(shù)做邏輯運(yùn)算展示,通過(guò)分享鏈接進(jìn)入該頁(yè)面需要自行在自定義分享入?yún)⒅腥テ唇釉搮?shù),否則分享鏈接不會(huì)帶上該參數(shù)。
帶參
可以在 onShareAppMessage 的 path 路徑參數(shù)后拼接自定義參數(shù)(參數(shù)傳遞遵循 http get 的傳參規(guī)則),如:pages/index/index?key1=value1
獲取參數(shù)
path 中的自定義參數(shù)可在小程序生命周期的 Page.onLoad(query) 方法中獲取,path 路徑里不能帶根目錄 /。
獲取示例代碼
onLoad(query) { if (query) { my.alert({ content: '啟動(dòng)參數(shù):' + JSON.stringify(query.x) }); }}
?
二、小程序內(nèi)部頁(yè)面之間跳轉(zhuǎn)
小程序內(nèi)頁(yè)面之間跳轉(zhuǎn),小程序提供了路由 API 供開(kāi)發(fā)者根據(jù)自己的場(chǎng)景選擇對(duì)應(yīng)的路由 API,路由 API 具體使用可查看官網(wǎng) API 文檔,這里只說(shuō)明帶參和獲取參數(shù)。小程序路由 API 帶參和獲取參數(shù)方式一致。
帶參
在 URL 入?yún)⒙窂胶笃唇訁?shù),如:url:"page/index/index?key1=value1&key2=value2"。
獲取參數(shù)
在對(duì)應(yīng)跳轉(zhuǎn)頁(yè)面的 Page.onLoad(query) 啟動(dòng)函數(shù)中 query 獲取。
獲取示例代碼
onLoad(query) { if (query) { my.alert({ content: '啟動(dòng)參數(shù):' + JSON.stringify(query.x) }); }}
小程序頁(yè)面路由 API 支持帶參跳轉(zhuǎn)情況
路由 API |
是否支持帶參 |
my.switchTab |
不支持 |
my.reLaunch |
支持 |
my.redirectTo |
支持 |
my.navigateTo |
支持 |
my.navigateBack |
不支持 |
常用場(chǎng)景中可用路由API
- 普通頁(yè)面之間跳轉(zhuǎn):my.navigateTo、my.redirectTo、my.reLaunch、my.navigateBack。
- tab 頁(yè)面跳轉(zhuǎn)普通頁(yè)面:my.navigateTo、my.redirectTo、my.reLaunch、my.navigateBack。
- tab 頁(yè)面跳轉(zhuǎn) tab 頁(yè)面:my.switchTab。
- 普通頁(yè)面跳轉(zhuǎn) tab 頁(yè)面:my.switchTab。
- 小程序頁(yè)面跳轉(zhuǎn) web-view 內(nèi)嵌頁(yè)面(根據(jù)具體跳轉(zhuǎn)的小程序頁(yè)面選擇):my.navigateTo、my.redirectTo、my.reLaunch、my.navigateBack、my.switchTab。
- web-view 內(nèi)嵌頁(yè)面跳轉(zhuǎn)小程序頁(yè)面(內(nèi)嵌頁(yè)面跳轉(zhuǎn)小程序頁(yè)面也是用的小程序路由 API,根據(jù)具體跳轉(zhuǎn)的小程序頁(yè)面選擇):my.navigateTo、my.redirectTo、my.reLaunch、my.navigateBack、my.switchTab。
注意:my.navigateTo最多不能超過(guò) 10 層頁(yè)面棧,建議通過(guò) getCurrentPages 方法判斷頁(yè)面棧峰值,超過(guò)后用重定向跳轉(zhuǎn)頁(yè)面。
?
三、小程序內(nèi)部跳轉(zhuǎn)小程序外部
小程序?qū)ν馓?span style="color: rgba(128, 0, 0, 1)">有限制條件,以下為具體條件說(shuō)明。
支持外跳
- 小程序 web-view 內(nèi)嵌式跳轉(zhuǎn) H5 頁(yè)面,不能真正跳出小程序環(huán)境。
帶參:可以在 URL 后拼接參數(shù)和 GET 方式一致(參數(shù)傳遞遵循 http get 的傳參規(guī)則),如https://www.baidu.com?key1=value1
。 - 小程序支持通過(guò) 關(guān)注生活號(hào) 組件關(guān)注并跳轉(zhuǎn)生活號(hào)(不可帶參)。
- 小程序支持跳轉(zhuǎn)以
https://render.alipay.com/p
域名開(kāi)頭的生活號(hào)文章/部分支付寶官方業(yè)務(wù)頁(yè)面或者通過(guò)固定 appCode 值跳轉(zhuǎn)對(duì)應(yīng)支付寶端頁(yè)面,詳情可查看 my.ap.navigateToAlipayPage。 - 小程序支持跳轉(zhuǎn)支付寶卡包/商家會(huì)員卡,可使用以下接口:
接口名稱 |
接口描述 |
my.openCardList |
打開(kāi)支付寶卡包中的“卡”列表 |
my.openMerchantCardList |
打開(kāi)當(dāng)前用戶領(lǐng)取某個(gè)商家的“卡”列表 |
my.openCardDetail |
打開(kāi)當(dāng)前用戶領(lǐng)取某張卡的詳情頁(yè) |
my.openVoucherList |
打開(kāi)支付寶卡包中的“券”列表 |
my.openMerchantVoucherList |
打開(kāi)當(dāng)前用戶領(lǐng)取某個(gè)商戶的“券”列表 |
my.openVoucherDetail |
打開(kāi)當(dāng)前用戶領(lǐng)取某張券的詳情頁(yè)(非口碑券) |
my.openKBVoucherDetail |
打開(kāi)當(dāng)前用戶領(lǐng)取某張券的詳情頁(yè)(口碑券) |
my.openTicketList |
打開(kāi)支付寶卡包中的“票”列表 |
my.openMerchantTicketList |
打開(kāi)當(dāng)前用戶領(lǐng)取某個(gè)商家的“票”列表 |
my.openTicketDetail |
打開(kāi)當(dāng)前用戶領(lǐng)取某張票的詳情頁(yè) |
- 外跳其它小程序??刹榭瓷衔?外部跳轉(zhuǎn)小程序-小程序跳轉(zhuǎn)小程序。
不支持外跳
- 小程序不支持外跳其它 APP。
- 小程序不支持跳轉(zhuǎn) AppStore。
?
以上就是關(guān)于小程序跳轉(zhuǎn)的所有內(nèi)容啦,有遺漏的地方大家可以提出來(lái)一起探討~(????),一起交流進(jìn)步~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-711007.html
到了這里,關(guān)于一文詳解|支付寶小程序跳轉(zhuǎn)(超詳細(xì)版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!