paySuccessRedirect.js
1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import Taro from '@tarojs/taro'
import { getTabbarConfigAPI } from '@/api/tabbar'
import { buildWebviewPreviewUrl } from '@/utils/webview'
/**
* @description 支付成功后跳转到“我的”菜单对应的 WebView;没有 user 菜单则回首页
* @returns {Promise<{ target: 'user-webview' | 'home', reason: 'success' | 'missing-user-menu' | 'empty-user-link' | 'request-failed' }>}
*/
export const redirectAfterPaySuccess = async () => {
try {
const response = await getTabbarConfigAPI()
const user_menu = response?.data?.user
if (!user_menu) {
await Taro.reLaunch({
url: '/pages/index/index',
})
return { target: 'home', reason: 'missing-user-menu' }
}
const user_link = String(user_menu?.link || '').trim()
if (!user_link) {
await Taro.reLaunch({
url: '/pages/index/index',
})
return { target: 'home', reason: 'empty-user-link' }
}
const user_title = String(user_menu?.title || '我的').trim() || '我的'
await Taro.redirectTo({
url: buildWebviewPreviewUrl(user_link, user_title),
})
return { target: 'user-webview', reason: 'success' }
} catch (error) {
console.error('支付成功后跳转目标获取失败:', error)
await Taro.reLaunch({
url: '/pages/index/index',
})
return { target: 'home', reason: 'request-failed' }
}
}