diff --git a/huakai-app/App.vue b/huakai-app/App.vue index 87de236..603d423 100644 --- a/huakai-app/App.vue +++ b/huakai-app/App.vue @@ -2,10 +2,10 @@ import { onLaunch, onShow } from '@dcloudio/uni-app' import { captureAppLaunchData } from '/pageSubPack/api/appLaunch.js' - onLaunch(() => { - console.log('App 启动') + onLaunch((options) => { + console.log('App 启动', JSON.stringify(options)) // 捕获 App 跳转传入的支付参数(冷启动) - captureAppLaunchData() + captureAppLaunchData(options) // #ifdef APP-PLUS getPushCID() diff --git a/huakai-app/pageSubPack/api/apiSub.js b/huakai-app/pageSubPack/api/apiSub.js index 11bcc80..173bba2 100644 --- a/huakai-app/pageSubPack/api/apiSub.js +++ b/huakai-app/pageSubPack/api/apiSub.js @@ -46,3 +46,8 @@ export const getTopupRecordWithStat = (data) => { export const postSubscribeAuth = (data) => { return post(`/api/wx/subscribeAuth/auth`, data) } +// 获取日照银行小程序拉起参数 +export const getBankMiniProgramParams = (data) => { + return post('/api/pay/yidang/create', data) +} + diff --git a/huakai-app/pageSubPack/api/appLaunch.js b/huakai-app/pageSubPack/api/appLaunch.js index 4c68bc9..b1e020c 100644 --- a/huakai-app/pageSubPack/api/appLaunch.js +++ b/huakai-app/pageSubPack/api/appLaunch.js @@ -1,13 +1,30 @@ /** * App 跳转参数处理 - * 花开物业 App 通过 path query string 将 token、支付参数传入本中间小程序。 + * 花开物业 App 通过 launchMiniProgram 的 extraData 传入支付参数和登录凭证, + * 小程序通过 referrerInfo.extraData 接收(查询字符串格式)。 * - * App 传入示例: - * pageSubPack/payment-list/arrearsPayment?token=xxx&userId=xxx&payAmount=10&acct=xxx&custId=xxx&sign=xxx&... + * extraData 示例: + * payAmount=10&acct=xxx&custId=xxx&token=xxx&userId=xxx&sign=xxx&... */ const STORAGE_KEY = 'app_launch_payment_data' +/** + * 解析查询字符串为对象 + */ +function parseQueryString(str) { + if (!str || typeof str !== 'string') return null + const params = {} + str.split('&').forEach(item => { + const idx = item.indexOf('=') + if (idx === -1) return + const key = item.substring(0, idx) + const val = item.substring(idx + 1) + params[key] = decodeURIComponent(val || '') + }) + return params +} + /** * 从启动参数中获取 App 传入的全部数据(支付参数 + token + userId) */ @@ -17,12 +34,23 @@ export function captureAppLaunchData(onShowOptions) { const tryGetData = (options, label) => { if (!options) return null console.log(label, JSON.stringify(options)) + + // 优先从 query 获取 if (options.query && Object.keys(options.query).length > 0) { return options.query } - if (options?.referrerInfo?.extraData) { - return options.referrerInfo.extraData + + // referrerInfo.extraData:可能是对象也可能是查询字符串 + const extraData = options?.referrerInfo?.extraData + console.log( ' extraData====',extraData) + if (extraData) { + if (typeof extraData === 'string') { + console.log(label + ' extraData 是查询字符串,解析中...') + return parseQueryString(extraData) + } + return extraData } + return null } diff --git a/huakai-app/pageSubPack/payment-list/arrearsPayment.vue b/huakai-app/pageSubPack/payment-list/arrearsPayment.vue index d7819ce..1096484 100644 --- a/huakai-app/pageSubPack/payment-list/arrearsPayment.vue +++ b/huakai-app/pageSubPack/payment-list/arrearsPayment.vue @@ -28,6 +28,8 @@