最近公司項目有個掃碼打開訂單付款的功能大概是這樣的(uniapp 項目) 微信支付暫且不說網上教程也很豐富 重點講講支付寶(吐槽下支付寶小程式審核,真是太慢了,一天只能審核大概3-4次 每次審核要耗時 好幾個小時) 基本開發思路是這樣的(vue/uni-app): 1.打開頁面前獲取傳入參數(onl ...
最近公司項目有個掃碼打開訂單付款的功能大概是這樣的(uniapp 項目)
微信支付暫且不說網上教程也很豐富
重點講講支付寶(吐槽下支付寶小程式審核,真是太慢了,一天只能審核大概3-4次 每次審核要耗時 好幾個小時)
基本開發思路是這樣的(vue/uni-app):
1.打開頁面前獲取傳入參數(onload) 2.根據傳入參數發起網路請求獲取訂單詳情 3.根據平臺發起支付
在微信上很順利的成功獲取到微信掃碼傳來的參數(q) 註意這個q 在微信掃描獲取到的參數(例如:https://test.com/orderNo/1111222)在微信掃碼的情況下得到的數據是這樣的:
{q: "https%3A%2F%2Fbdtest.com%2Forder%2F111222"}
在支付寶掃碼獲取到的參數是這樣的:
{"path":"pages/index/index","query":{"qrCode":"https://test.com/orderNo/111222"}}
註意!註意!註意!
微信獲取參數是在 onLoad 下麵 。支付寶不是 支付寶不是 支付寶不是 支付寶需要通過 onLanch 獲取,而且onLanch是在項目啟動時才能調用到頁面內想要獲取:
onLaunch(options){ my.alert({ title: 'app onLaunch', content: JSON.stringify(options), success: (res) => { //成功處理代碼段 }, }); //獲取關聯普通二維碼的碼值,放到全局變數qrCode中 if (options.query && options.query.qrCode) { let scene = decodeURIComponent(options.query.qrCode);// http://5de844c.ngrok.io/xxx?a=cc&ccs=sxxxx let temp = scene.split('?') let test = temp[1].split('&'); console.log("temp:",temp[1]);// temp: a=cc&ccs=sxxxx console.log("test:",test[0]);// test: a=cc console.log("test:",test[1]);// test: ccs=sxxxx } }
想要在頁面內獲取到掃描參數要這樣(瘋狂吐槽):
onLoad() { //頁面中也可以獲取query參數:query: { a: 'foo',b: 'bar'} let params = uni.getLaunchOptionsSync().query //{"qrCode":"https://test.com/orderNo/111222"}
let url = params.qrCode
},
特此記錄
補充:
支付寶 和微信小程式 後臺鬥腰配置 二維碼
支付寶後臺:
微信小程式後臺:
配置大同小異