@uxda/appkit 4.2.82 → 4.2.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.mjs +7 -7
- package/README.md +187 -187
- package/babel.config.js +12 -12
- package/dist/appkit.css +41 -3
- package/dist/index.js +994 -535
- package/package.json +81 -81
- package/project.config.json +15 -15
- package/project.tt.json +13 -13
- package/rollup.config.mjs +77 -77
- package/src/Appkit.ts +67 -67
- package/src/balance/api/endpoints.ts +133 -133
- package/src/balance/api/index.ts +112 -106
- package/src/balance/components/AccountView.vue +773 -773
- package/src/balance/components/BalanceCard.vue +210 -210
- package/src/balance/components/BalanceReminder.vue +84 -84
- package/src/balance/components/ConsumptionFilter.vue +218 -218
- package/src/balance/components/ConsumptionRules.vue +68 -68
- package/src/balance/components/DateFilter.vue +259 -259
- package/src/balance/components/DateRange.vue +111 -111
- package/src/balance/components/ListFilter.vue +62 -62
- package/src/balance/components/ListFilterPicker.vue +191 -191
- package/src/balance/components/PromoterCard.vue +310 -310
- package/src/balance/components/SecondBalance.vue +77 -77
- package/src/balance/components/Tip.vue +45 -45
- package/src/balance/components/index.ts +8 -8
- package/src/balance/types.ts +99 -99
- package/src/components/bt-cropper/index.vue +730 -730
- package/src/components/bt-cropper/utils/calcCropper.js +42 -42
- package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
- package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
- package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
- package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
- package/src/components/bt-cropper/utils/ratio.js +3 -3
- package/src/components/bt-cropper/utils/tools.js +25 -25
- package/src/components/dd-area/index.vue +225 -225
- package/src/components/dd-icon/doc.md +21 -21
- package/src/components/dd-icon/index.vue +23 -23
- package/src/components/dd-notice-bar/index.vue +78 -78
- package/src/components/dd-search/doc.md +34 -34
- package/src/components/dd-search/index.vue +168 -168
- package/src/components/dd-selector/index.vue +124 -124
- package/src/components/dd-skeleton/doc.md +19 -19
- package/src/components/dd-skeleton/index.vue +36 -36
- package/src/global.ts +6 -6
- package/src/index.ts +93 -93
- package/src/main.scss +1 -1
- package/src/notice/api/endpoints.ts +54 -17
- package/src/notice/api/index.ts +115 -106
- package/src/notice/components/NoticeBanner.vue +247 -247
- package/src/notice/components/NoticeEntry.vue +99 -99
- package/src/notice/components/NoticeList.vue +311 -311
- package/src/notice/components/NoticeList2.vue +243 -0
- package/src/notice/components/NoticePopup.vue +163 -163
- package/src/notice/components/index.ts +6 -5
- package/src/notice/components/useCommonList.ts +86 -86
- package/src/notice/components/useNotice.ts +35 -35
- package/src/notice/index.ts +1 -1
- package/src/notice/types.ts +25 -25
- package/src/payment/api/config.ts +7 -7
- package/src/payment/api/endpoints.ts +95 -95
- package/src/payment/api/index.ts +101 -101
- package/src/payment/components/AmountPicker.vue +90 -90
- package/src/payment/components/RechargeResult.vue +69 -69
- package/src/payment/components/RechargeView.vue +190 -190
- package/src/payment/components/RightsPicker.vue +105 -105
- package/src/payment/components/TradeView.vue +363 -363
- package/src/payment/components/UserAgreement.vue +234 -234
- package/src/payment/components/index.ts +22 -22
- package/src/payment/index.ts +5 -5
- package/src/payment/services/index.ts +16 -16
- package/src/payment/services/invoke-recharge.ts +25 -25
- package/src/payment/services/request-payment.ts +130 -130
- package/src/payment/types.ts +32 -32
- package/src/register/components/SelfRegistration.vue +233 -233
- package/src/register/components/index.ts +2 -2
- package/src/scenarios/components/SharePoster.vue +364 -364
- package/src/scenarios/components/index.ts +2 -2
- package/src/scenarios/components/poster-paste.vue +93 -93
- package/src/scenarios/components/share-poster.md +273 -273
- package/src/shared/components/AppDrawer.vue +53 -53
- package/src/shared/components/AppVerify.vue +128 -128
- package/src/shared/components/DeviceVersion.vue +78 -78
- package/src/shared/components/EmptyView.vue +33 -33
- package/src/shared/components/OcrBusinessLicense.vue +137 -137
- package/src/shared/components/OcrIcon.vue +229 -229
- package/src/shared/components/PageHeader.vue +84 -84
- package/src/shared/components/index.ts +8 -8
- package/src/shared/composables/index.ts +9 -9
- package/src/shared/composables/useAmount.ts +46 -46
- package/src/shared/composables/useCountdown.ts +46 -46
- package/src/shared/composables/useCrypto.ts +76 -76
- package/src/shared/composables/useDeviceEnv.ts +11 -11
- package/src/shared/composables/useDragBox.ts +97 -97
- package/src/shared/composables/useEncode.ts +43 -43
- package/src/shared/composables/useLogger.ts +131 -131
- package/src/shared/composables/useSafeArea.ts +46 -46
- package/src/shared/composables/useTabbar.ts +24 -24
- package/src/shared/composables/useUpload.ts +61 -61
- package/src/shared/composables/useValidator.ts +32 -32
- package/src/shared/composables/useWxAuth.ts +48 -48
- package/src/shared/http/Http.ts +148 -146
- package/src/shared/http/index.ts +1 -1
- package/src/shared/http/types.ts +163 -160
- package/src/shared/index.ts +8 -8
- package/src/shared/weixin/index.ts +9 -9
- package/src/shared/weixin/jssdk.ts +103 -103
- package/src/shared/weixin/payment.ts +38 -38
- package/src/styles/vars.scss +3 -3
- package/src/user/api/endpoints.ts +17 -17
- package/src/user/api/index.ts +117 -111
- package/src/user/components/LoginSetting.vue +114 -114
- package/src/user/components/UserAuth.vue +220 -220
- package/src/user/components/UserBinding.vue +277 -277
- package/src/user/components/UserBindingSuccess.vue +80 -80
- package/src/user/components/UserEntry.vue +139 -139
- package/src/user/components/UserFeedback.vue +427 -427
- package/src/user/components/UserFeedbackEntry.vue +175 -175
- package/src/user/components/UserHeadCrop.vue +65 -65
- package/src/user/components/UserInfo.vue +708 -708
- package/src/user/components/UserResourceEmpty.vue +75 -75
- package/src/user/components/index.ts +23 -23
- package/src/user/index.ts +1 -1
- package/src/utils/utils.ts +28 -28
- package/tsconfig.json +30 -30
- package/types/global.d.ts +22 -22
- package/types/vue.d.ts +10 -10
- /package/dist/assets/{asset-DcH8Kg-2 → asset-3B_CoPto} +0 -0
package/src/shared/http/types.ts
CHANGED
|
@@ -1,160 +1,163 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 由使用场景提供的配置
|
|
3
|
-
* createHttp() 使用的配置
|
|
4
|
-
*/
|
|
5
|
-
export type HttpClientConfig = {
|
|
6
|
-
vendor?: HttpVendor
|
|
7
|
-
baseUrl: string
|
|
8
|
-
/**
|
|
9
|
-
* 向 HTTP header 加入的数据
|
|
10
|
-
* 通常含有 JWT token 以及其他参数
|
|
11
|
-
*/
|
|
12
|
-
headers?: HeaderParams
|
|
13
|
-
paging?: Paging
|
|
14
|
-
/**
|
|
15
|
-
* 拦截器组
|
|
16
|
-
* 请求返回异常时进行一定的操作
|
|
17
|
-
*/
|
|
18
|
-
interceptors?: HttpInterceptor[]
|
|
19
|
-
translates?: HttpTranslates
|
|
20
|
-
transforms?: HttpTransforms
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* HTTP 请求的底层实现
|
|
25
|
-
* Axios/Taro.request
|
|
26
|
-
*/
|
|
27
|
-
export type HttpVendor = {
|
|
28
|
-
request<T = ResponseData>(config: HttpRequestConfig): Promise<ResponseRaw<T>>
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export type HttpInterceptor = (raw: ResponseRaw) => boolean
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Request Config for request API
|
|
35
|
-
* 沿用 Axios 的部分配置
|
|
36
|
-
*/
|
|
37
|
-
export type HttpRequestConfig<D = RequestData> = {
|
|
38
|
-
url: string
|
|
39
|
-
method?: HttpMethod
|
|
40
|
-
baseUrl?: string
|
|
41
|
-
headers?: HeaderData
|
|
42
|
-
data?: D
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Request data for http get & post method
|
|
47
|
-
*/
|
|
48
|
-
export type RequestData = Record<string, any>
|
|
49
|
-
|
|
50
|
-
export type RequestHeaders = Record<string, any>
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* 接口请求返回的标准格式
|
|
54
|
-
*/
|
|
55
|
-
export type ResponseRaw<T = ResponseData> = {
|
|
56
|
-
status: number
|
|
57
|
-
message: string
|
|
58
|
-
data: T
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* 拆箱之后前端拿到的数据
|
|
63
|
-
*/
|
|
64
|
-
export type ResponseData = Record<string, any> | any[]
|
|
65
|
-
|
|
66
|
-
export type HttpInstance = {
|
|
67
|
-
request<T = ResponseData>(config: HttpRequestConfig): Promise<T>
|
|
68
|
-
get<T = ResponseData>(url: string, data?: RequestData): Promise<T>
|
|
69
|
-
post<T = ResponseData>(url: string, data?: RequestData, headers?: RequestHeaders): Promise<T>
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
*/
|
|
75
|
-
export type HttpTranslates = Record<string, HttpTranslate | undefined>
|
|
76
|
-
export type HttpTransforms = Record<string, HttpTransform | undefined>
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* 向 request header 加入参数
|
|
80
|
-
* 多数是 token
|
|
81
|
-
*/
|
|
82
|
-
export type HeaderParams = Record<string, string>
|
|
83
|
-
|
|
84
|
-
export enum HttpMethod {
|
|
85
|
-
get = 'GET',
|
|
86
|
-
post = 'POST',
|
|
87
|
-
put = 'PUT',
|
|
88
|
-
delete = 'DELETE',
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export enum HttpError {
|
|
92
|
-
auth = 'auth',
|
|
93
|
-
server = 'server',
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export type HeaderData = Record<string, string>
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* 接口参数转换器
|
|
100
|
-
*/
|
|
101
|
-
export type HttpTranslate = (data: RequestData) => RequestData
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* 接口数据转换器
|
|
105
|
-
*/
|
|
106
|
-
export type HttpTransform = (data: ResponseData) => ResponseData
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* 接口设置
|
|
110
|
-
*/
|
|
111
|
-
export type HttpEndpoint = {
|
|
112
|
-
path: string
|
|
113
|
-
translate?: HttpTranslate
|
|
114
|
-
transform?: HttpTransform
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* 接口组
|
|
119
|
-
*/
|
|
120
|
-
export type HttpEndpoints = {
|
|
121
|
-
[name: string]: HttpEndpoint
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* 分页参数
|
|
126
|
-
*/
|
|
127
|
-
export type PagingParams = {
|
|
128
|
-
/**
|
|
129
|
-
* 页数
|
|
130
|
-
*/
|
|
131
|
-
page: number
|
|
132
|
-
/**
|
|
133
|
-
* 页数据条数
|
|
134
|
-
*/
|
|
135
|
-
pageSize: number
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export type PagingData = {
|
|
139
|
-
/**
|
|
140
|
-
* 页总数
|
|
141
|
-
*/
|
|
142
|
-
totalPages
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
1
|
+
/**
|
|
2
|
+
* 由使用场景提供的配置
|
|
3
|
+
* createHttp() 使用的配置
|
|
4
|
+
*/
|
|
5
|
+
export type HttpClientConfig = {
|
|
6
|
+
vendor?: HttpVendor
|
|
7
|
+
baseUrl: string
|
|
8
|
+
/**
|
|
9
|
+
* 向 HTTP header 加入的数据
|
|
10
|
+
* 通常含有 JWT token 以及其他参数
|
|
11
|
+
*/
|
|
12
|
+
headers?: HeaderParams
|
|
13
|
+
paging?: Paging
|
|
14
|
+
/**
|
|
15
|
+
* 拦截器组
|
|
16
|
+
* 请求返回异常时进行一定的操作
|
|
17
|
+
*/
|
|
18
|
+
interceptors?: HttpInterceptor[]
|
|
19
|
+
translates?: HttpTranslates
|
|
20
|
+
transforms?: HttpTransforms
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* HTTP 请求的底层实现
|
|
25
|
+
* Axios/Taro.request
|
|
26
|
+
*/
|
|
27
|
+
export type HttpVendor = {
|
|
28
|
+
request<T = ResponseData>(config: HttpRequestConfig): Promise<ResponseRaw<T>>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type HttpInterceptor = (raw: ResponseRaw) => boolean
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Request Config for request API
|
|
35
|
+
* 沿用 Axios 的部分配置
|
|
36
|
+
*/
|
|
37
|
+
export type HttpRequestConfig<D = RequestData> = {
|
|
38
|
+
url: string
|
|
39
|
+
method?: HttpMethod
|
|
40
|
+
baseUrl?: string
|
|
41
|
+
headers?: HeaderData
|
|
42
|
+
data?: D
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Request data for http get & post method
|
|
47
|
+
*/
|
|
48
|
+
export type RequestData = Record<string, any>
|
|
49
|
+
|
|
50
|
+
export type RequestHeaders = Record<string, any>
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 接口请求返回的标准格式
|
|
54
|
+
*/
|
|
55
|
+
export type ResponseRaw<T = ResponseData> = {
|
|
56
|
+
status: number
|
|
57
|
+
message: string
|
|
58
|
+
data: T
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 拆箱之后前端拿到的数据
|
|
63
|
+
*/
|
|
64
|
+
export type ResponseData = Record<string, any> | any[]
|
|
65
|
+
|
|
66
|
+
export type HttpInstance = {
|
|
67
|
+
request<T = ResponseData>(config: HttpRequestConfig): Promise<T>
|
|
68
|
+
get<T = ResponseData>(url: string, data?: RequestData): Promise<T>
|
|
69
|
+
post<T = ResponseData>(url: string, data?: RequestData, headers?: RequestHeaders): Promise<T>
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
*/
|
|
75
|
+
export type HttpTranslates = Record<string, HttpTranslate | undefined>
|
|
76
|
+
export type HttpTransforms = Record<string, HttpTransform | undefined>
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 向 request header 加入参数
|
|
80
|
+
* 多数是 token
|
|
81
|
+
*/
|
|
82
|
+
export type HeaderParams = Record<string, string>
|
|
83
|
+
|
|
84
|
+
export enum HttpMethod {
|
|
85
|
+
get = 'GET',
|
|
86
|
+
post = 'POST',
|
|
87
|
+
put = 'PUT',
|
|
88
|
+
delete = 'DELETE',
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export enum HttpError {
|
|
92
|
+
auth = 'auth',
|
|
93
|
+
server = 'server',
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type HeaderData = Record<string, string>
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* 接口参数转换器
|
|
100
|
+
*/
|
|
101
|
+
export type HttpTranslate = (data: RequestData) => RequestData
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* 接口数据转换器
|
|
105
|
+
*/
|
|
106
|
+
export type HttpTransform = (data: ResponseData) => ResponseData
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* 接口设置
|
|
110
|
+
*/
|
|
111
|
+
export type HttpEndpoint = {
|
|
112
|
+
path: string
|
|
113
|
+
translate?: HttpTranslate
|
|
114
|
+
transform?: HttpTransform
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* 接口组
|
|
119
|
+
*/
|
|
120
|
+
export type HttpEndpoints = {
|
|
121
|
+
[name: string]: HttpEndpoint
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* 分页参数
|
|
126
|
+
*/
|
|
127
|
+
export type PagingParams = {
|
|
128
|
+
/**
|
|
129
|
+
* 页数
|
|
130
|
+
*/
|
|
131
|
+
page: number
|
|
132
|
+
/**
|
|
133
|
+
* 页数据条数
|
|
134
|
+
*/
|
|
135
|
+
pageSize: number
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export type PagingData = {
|
|
139
|
+
/**
|
|
140
|
+
* 页总数
|
|
141
|
+
*/
|
|
142
|
+
totalPages?: number
|
|
143
|
+
total: number
|
|
144
|
+
totalRecords: number
|
|
145
|
+
isLastPage?: boolean
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Wrapped with Paging Data
|
|
150
|
+
*/
|
|
151
|
+
export type WithPaging<T = ResponseData> = {
|
|
152
|
+
[K in keyof PagingData]: PagingData[K]
|
|
153
|
+
} & {
|
|
154
|
+
data: T
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* 分页设置
|
|
159
|
+
*/
|
|
160
|
+
export type Paging = {
|
|
161
|
+
translate(params: PagingParams): any
|
|
162
|
+
transform(resonse: any): PagingData
|
|
163
|
+
}
|
package/src/shared/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './weixin'
|
|
2
|
-
export * from './components'
|
|
3
|
-
export * from './composables'
|
|
4
|
-
export * from './http'
|
|
5
|
-
|
|
6
|
-
import jssdkServices from './weixin'
|
|
7
|
-
|
|
8
|
-
export { jssdkServices }
|
|
1
|
+
export * from './weixin'
|
|
2
|
+
export * from './components'
|
|
3
|
+
export * from './composables'
|
|
4
|
+
export * from './http'
|
|
5
|
+
|
|
6
|
+
import jssdkServices from './weixin'
|
|
7
|
+
|
|
8
|
+
export { jssdkServices }
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Service } from '../../payment/services'
|
|
2
|
-
import getSdkConfig from './jssdk'
|
|
3
|
-
|
|
4
|
-
const jssdkServices: Service[] = [getSdkConfig]
|
|
5
|
-
|
|
6
|
-
export default jssdkServices
|
|
7
|
-
|
|
8
|
-
export * from './payment'
|
|
9
|
-
export * from './jssdk'
|
|
1
|
+
import { Service } from '../../payment/services'
|
|
2
|
+
import getSdkConfig from './jssdk'
|
|
3
|
+
|
|
4
|
+
const jssdkServices: Service[] = [getSdkConfig]
|
|
5
|
+
|
|
6
|
+
export default jssdkServices
|
|
7
|
+
|
|
8
|
+
export * from './payment'
|
|
9
|
+
export * from './jssdk'
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
import { DollarApp } from '../../Appkit'
|
|
2
|
-
import { useHttp } from '../../payment/api'
|
|
3
|
-
import { showModal } from '@tarojs/taro'
|
|
4
|
-
|
|
5
|
-
interface JssdkConfig {
|
|
6
|
-
appId: string
|
|
7
|
-
nonceStr: string
|
|
8
|
-
signature: string
|
|
9
|
-
timeTicket: string
|
|
10
|
-
timestamp: string
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface PrePayOptions {
|
|
14
|
-
appId: string
|
|
15
|
-
nonceStr: string
|
|
16
|
-
package: string
|
|
17
|
-
paySign: string
|
|
18
|
-
signType: string
|
|
19
|
-
timeStamp: string
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* jssdk 初始化配置
|
|
24
|
-
* @param appCode
|
|
25
|
-
*/
|
|
26
|
-
const getSdkConfig = (appCode?: string, url?: string): Promise<JssdkConfig> => {
|
|
27
|
-
return new Promise<JssdkConfig>((resolve, reject) => {
|
|
28
|
-
const $http = useHttp()
|
|
29
|
-
|
|
30
|
-
$http
|
|
31
|
-
.get('/wecom/config/getConfig', {
|
|
32
|
-
appCode: appCode || 'cloudkitProMp',
|
|
33
|
-
callbackUrl: url || encodeURIComponent(location.href.split('#')[0]),
|
|
34
|
-
})
|
|
35
|
-
.then((response: JssdkConfig) => {
|
|
36
|
-
resolve(response)
|
|
37
|
-
})
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* 唤起微信支付
|
|
43
|
-
* @param options
|
|
44
|
-
*/
|
|
45
|
-
function requestWxH5Pay(options: PrePayOptions) {
|
|
46
|
-
return new Promise<boolean>((resolve, reject) => {
|
|
47
|
-
function onBridgeReady() {
|
|
48
|
-
// @ts-ignore
|
|
49
|
-
if (typeof WeixinJSBridge === 'undefined') {
|
|
50
|
-
showModal({
|
|
51
|
-
title: '提示',
|
|
52
|
-
content: '当前环境不支持微信支付,请在微信内置浏览器中打开',
|
|
53
|
-
confirmText: '确定',
|
|
54
|
-
success: () => {},
|
|
55
|
-
})
|
|
56
|
-
return
|
|
57
|
-
}
|
|
58
|
-
// @ts-ignore
|
|
59
|
-
WeixinJSBridge.invoke(
|
|
60
|
-
'getBrandWCPayRequest',
|
|
61
|
-
{
|
|
62
|
-
appId: options.appId,
|
|
63
|
-
nonceStr: options.nonceStr,
|
|
64
|
-
package: options.package,
|
|
65
|
-
paySign: options.paySign,
|
|
66
|
-
signType: options.signType,
|
|
67
|
-
timeStamp: options.timeStamp,
|
|
68
|
-
},
|
|
69
|
-
function (res) {
|
|
70
|
-
if (res.err_msg == 'get_brand_wcpay_request:ok') {
|
|
71
|
-
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠,商户需进一步调用后端查单确认支付结果。
|
|
72
|
-
resolve(true)
|
|
73
|
-
} else {
|
|
74
|
-
resolve(false)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
)
|
|
78
|
-
}
|
|
79
|
-
// @ts-ignore
|
|
80
|
-
if (typeof WeixinJSBridge == 'undefined') {
|
|
81
|
-
if (document.addEventListener) {
|
|
82
|
-
// @ts-ignore
|
|
83
|
-
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)
|
|
84
|
-
// @ts-ignore
|
|
85
|
-
} else if (document.attachEvent) {
|
|
86
|
-
// @ts-ignore
|
|
87
|
-
document.attachEvent('WeixinJSBridgeReady', onBridgeReady)
|
|
88
|
-
// @ts-ignore
|
|
89
|
-
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)
|
|
90
|
-
}
|
|
91
|
-
} else {
|
|
92
|
-
onBridgeReady()
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export default {
|
|
98
|
-
install($app: DollarApp) {
|
|
99
|
-
$app.getSdkConfig = getSdkConfig
|
|
100
|
-
},
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export { getSdkConfig, requestWxH5Pay }
|
|
1
|
+
import { DollarApp } from '../../Appkit'
|
|
2
|
+
import { useHttp } from '../../payment/api'
|
|
3
|
+
import { showModal } from '@tarojs/taro'
|
|
4
|
+
|
|
5
|
+
interface JssdkConfig {
|
|
6
|
+
appId: string
|
|
7
|
+
nonceStr: string
|
|
8
|
+
signature: string
|
|
9
|
+
timeTicket: string
|
|
10
|
+
timestamp: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface PrePayOptions {
|
|
14
|
+
appId: string
|
|
15
|
+
nonceStr: string
|
|
16
|
+
package: string
|
|
17
|
+
paySign: string
|
|
18
|
+
signType: string
|
|
19
|
+
timeStamp: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* jssdk 初始化配置
|
|
24
|
+
* @param appCode
|
|
25
|
+
*/
|
|
26
|
+
const getSdkConfig = (appCode?: string, url?: string): Promise<JssdkConfig> => {
|
|
27
|
+
return new Promise<JssdkConfig>((resolve, reject) => {
|
|
28
|
+
const $http = useHttp()
|
|
29
|
+
|
|
30
|
+
$http
|
|
31
|
+
.get('/wecom/config/getConfig', {
|
|
32
|
+
appCode: appCode || 'cloudkitProMp',
|
|
33
|
+
callbackUrl: url || encodeURIComponent(location.href.split('#')[0]),
|
|
34
|
+
})
|
|
35
|
+
.then((response: JssdkConfig) => {
|
|
36
|
+
resolve(response)
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 唤起微信支付
|
|
43
|
+
* @param options
|
|
44
|
+
*/
|
|
45
|
+
function requestWxH5Pay(options: PrePayOptions) {
|
|
46
|
+
return new Promise<boolean>((resolve, reject) => {
|
|
47
|
+
function onBridgeReady() {
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
if (typeof WeixinJSBridge === 'undefined') {
|
|
50
|
+
showModal({
|
|
51
|
+
title: '提示',
|
|
52
|
+
content: '当前环境不支持微信支付,请在微信内置浏览器中打开',
|
|
53
|
+
confirmText: '确定',
|
|
54
|
+
success: () => {},
|
|
55
|
+
})
|
|
56
|
+
return
|
|
57
|
+
}
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
WeixinJSBridge.invoke(
|
|
60
|
+
'getBrandWCPayRequest',
|
|
61
|
+
{
|
|
62
|
+
appId: options.appId,
|
|
63
|
+
nonceStr: options.nonceStr,
|
|
64
|
+
package: options.package,
|
|
65
|
+
paySign: options.paySign,
|
|
66
|
+
signType: options.signType,
|
|
67
|
+
timeStamp: options.timeStamp,
|
|
68
|
+
},
|
|
69
|
+
function (res) {
|
|
70
|
+
if (res.err_msg == 'get_brand_wcpay_request:ok') {
|
|
71
|
+
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠,商户需进一步调用后端查单确认支付结果。
|
|
72
|
+
resolve(true)
|
|
73
|
+
} else {
|
|
74
|
+
resolve(false)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
if (typeof WeixinJSBridge == 'undefined') {
|
|
81
|
+
if (document.addEventListener) {
|
|
82
|
+
// @ts-ignore
|
|
83
|
+
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
} else if (document.attachEvent) {
|
|
86
|
+
// @ts-ignore
|
|
87
|
+
document.attachEvent('WeixinJSBridgeReady', onBridgeReady)
|
|
88
|
+
// @ts-ignore
|
|
89
|
+
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
onBridgeReady()
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default {
|
|
98
|
+
install($app: DollarApp) {
|
|
99
|
+
$app.getSdkConfig = getSdkConfig
|
|
100
|
+
},
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { getSdkConfig, requestWxH5Pay }
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
export type PaymentOptions = {}
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 发起微信支付
|
|
5
|
-
* @param options
|
|
6
|
-
*/
|
|
7
|
-
export function requestPayment(json: any): Promise<boolean> {
|
|
8
|
-
/** 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 */
|
|
9
|
-
// const timeStamp: string = '',
|
|
10
|
-
// /** 随机字符串,长度为32个字符以下 */
|
|
11
|
-
// nonceStr: string = '',
|
|
12
|
-
// /** 统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=* */
|
|
13
|
-
// pack: string = '',
|
|
14
|
-
// /** 签名算法,暂支持MD5 */
|
|
15
|
-
// signType: string = 'MD5',
|
|
16
|
-
// /** 签名,具体签名方案参见微信公众号支付帮助文档(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3&t=1474537654457); */
|
|
17
|
-
// paySign: string = ''
|
|
18
|
-
// /** 接口调用成功的回调函数 */
|
|
19
|
-
// const success = (res: {}) => {},
|
|
20
|
-
// /**接口调用失败的回调函数*/
|
|
21
|
-
// fail = () => {},
|
|
22
|
-
// /**接口调用结束的回调函数(调用成功、失败都会执行)*/
|
|
23
|
-
// complete = () => {}
|
|
24
|
-
return new Promise<boolean>((resolve, reject) => {
|
|
25
|
-
const success = (res) => {
|
|
26
|
-
resolve(true)
|
|
27
|
-
}
|
|
28
|
-
const fail = (res) => {
|
|
29
|
-
console.log('wx.requestPayment FAIL:', res)
|
|
30
|
-
resolve(false)
|
|
31
|
-
}
|
|
32
|
-
wx.requestPayment({
|
|
33
|
-
...json,
|
|
34
|
-
success,
|
|
35
|
-
fail
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
}
|
|
1
|
+
export type PaymentOptions = {}
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 发起微信支付
|
|
5
|
+
* @param options
|
|
6
|
+
*/
|
|
7
|
+
export function requestPayment(json: any): Promise<boolean> {
|
|
8
|
+
/** 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 */
|
|
9
|
+
// const timeStamp: string = '',
|
|
10
|
+
// /** 随机字符串,长度为32个字符以下 */
|
|
11
|
+
// nonceStr: string = '',
|
|
12
|
+
// /** 统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=* */
|
|
13
|
+
// pack: string = '',
|
|
14
|
+
// /** 签名算法,暂支持MD5 */
|
|
15
|
+
// signType: string = 'MD5',
|
|
16
|
+
// /** 签名,具体签名方案参见微信公众号支付帮助文档(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3&t=1474537654457); */
|
|
17
|
+
// paySign: string = ''
|
|
18
|
+
// /** 接口调用成功的回调函数 */
|
|
19
|
+
// const success = (res: {}) => {},
|
|
20
|
+
// /**接口调用失败的回调函数*/
|
|
21
|
+
// fail = () => {},
|
|
22
|
+
// /**接口调用结束的回调函数(调用成功、失败都会执行)*/
|
|
23
|
+
// complete = () => {}
|
|
24
|
+
return new Promise<boolean>((resolve, reject) => {
|
|
25
|
+
const success = (res) => {
|
|
26
|
+
resolve(true)
|
|
27
|
+
}
|
|
28
|
+
const fail = (res) => {
|
|
29
|
+
console.log('wx.requestPayment FAIL:', res)
|
|
30
|
+
resolve(false)
|
|
31
|
+
}
|
|
32
|
+
wx.requestPayment({
|
|
33
|
+
...json,
|
|
34
|
+
success,
|
|
35
|
+
fail
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
}
|
package/src/styles/vars.scss
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
page {
|
|
2
|
-
--text-color: #333;
|
|
3
|
-
--text-color-dark-mode: #eee;
|
|
1
|
+
page {
|
|
2
|
+
--text-color: #333;
|
|
3
|
+
--text-color-dark-mode: #eee;
|
|
4
4
|
}
|