|
|
@@ -89,6 +89,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
<script setup>
|
|
|
|
import { ref, onMounted, nextTick } from 'vue'
|
|
|
|
import { ref, onMounted, nextTick } from 'vue'
|
|
|
|
|
|
|
|
import { onShow } from '@dcloudio/uni-app'
|
|
|
|
import { api } from '../../config'
|
|
|
|
import { api } from '../../config'
|
|
|
|
import UQRCode from 'uqrcodejs'
|
|
|
|
import UQRCode from 'uqrcodejs'
|
|
|
|
|
|
|
|
|
|
|
@@ -112,13 +113,16 @@ const sprintFeatures = ref(['成长版全部权益', 'AI 语音分析(语气
|
|
|
|
|
|
|
|
|
|
|
|
const token = () => uni.getStorageSync('token') || ''
|
|
|
|
const token = () => uni.getStorageSync('token') || ''
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
const refreshState = async () => {
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
isMp.value = true
|
|
|
|
isMp.value = true
|
|
|
|
// #endif
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
|
|
|
|
const t = token()
|
|
|
|
const t = token()
|
|
|
|
if (!t) return
|
|
|
|
if (!t) {
|
|
|
|
|
|
|
|
isLoggedIn.value = false
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
isLoggedIn.value = true
|
|
|
|
isLoggedIn.value = true
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@@ -146,7 +150,10 @@ onMounted(async () => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) { /* ignore */ }
|
|
|
|
} catch (e) { /* ignore */ }
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(() => { refreshState() })
|
|
|
|
|
|
|
|
onShow(() => { refreshState() })
|
|
|
|
|
|
|
|
|
|
|
|
const goLogin = () => uni.navigateTo({ url: '/pages/login/login' })
|
|
|
|
const goLogin = () => uni.navigateTo({ url: '/pages/login/login' })
|
|
|
|
|
|
|
|
|
|
|
@@ -183,6 +190,7 @@ const startPay = async (selectedPlan) => {
|
|
|
|
url: api('/payment/jsapi'), method: 'POST',
|
|
|
|
url: api('/payment/jsapi'), method: 'POST',
|
|
|
|
data: { plan: planLabel },
|
|
|
|
data: { plan: planLabel },
|
|
|
|
header: { 'Authorization': `Bearer ${t}`, 'Content-Type': 'application/json' },
|
|
|
|
header: { 'Authorization': `Bearer ${t}`, 'Content-Type': 'application/json' },
|
|
|
|
|
|
|
|
timeout: 30000,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
payLoading.value = false
|
|
|
|
payLoading.value = false
|
|
|
|
|
|
|
|
|
|
|
@@ -203,6 +211,11 @@ const startPay = async (selectedPlan) => {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
fail: (err) => { payError.value = '支付取消或失败'; uni.showToast({ title: '支付取消', icon: 'none' }) },
|
|
|
|
fail: (err) => { payError.value = '支付取消或失败'; uni.showToast({ title: '支付取消', icon: 'none' }) },
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
} else if (!res.statusCode || res.statusCode === 0) {
|
|
|
|
|
|
|
|
payLoading.value = false
|
|
|
|
|
|
|
|
const errMsg = '网络连接失败,请检查网络后重试'
|
|
|
|
|
|
|
|
payError.value = errMsg
|
|
|
|
|
|
|
|
uni.showToast({ title: errMsg, icon: 'none' })
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
payLoading.value = false
|
|
|
|
payLoading.value = false
|
|
|
|
const errMsg = res.data?.message || '创建订单失败'
|
|
|
|
const errMsg = res.data?.message || '创建订单失败'
|
|
|
@@ -242,9 +255,14 @@ const startPay = async (selectedPlan) => {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// 轮询支付结果
|
|
|
|
// 轮询支付结果
|
|
|
|
pollPayResult(res.data.outTradeNo, planLabel)
|
|
|
|
pollPayResult(res.data.outTradeNo, planLabel)
|
|
|
|
|
|
|
|
} else if (!res.statusCode || res.statusCode === 0) {
|
|
|
|
|
|
|
|
payLoading.value = false
|
|
|
|
|
|
|
|
const errMsg = '网络连接失败,请检查网络后重试'
|
|
|
|
|
|
|
|
payError.value = errMsg
|
|
|
|
|
|
|
|
uni.showToast({ title: errMsg, icon: 'none' })
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
payError.value = res.data?.message || '支付服务暂不可用'
|
|
|
|
payError.value = res.data?.message || '支付服务暂不可用'
|
|
|
|
uni.showToast({ title: '支付服务暂不可用', icon: 'none' })
|
|
|
|
uni.showToast({ title: res.data?.message || '支付服务暂不可用', icon: 'none' })
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
} catch (e) {
|
|
|
|
payLoading.value = false
|
|
|
|
payLoading.value = false
|
|
|
|