@pisell/private-materials 6.3.45 → 6.3.47

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.
Files changed (90) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +9 -9
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/Sales/Summary/utils.d.ts +1 -1
  12. package/es/components/appointmentBooking/components/Voucher/index.js +1 -0
  13. package/es/components/booking/components/voucher/index.js +3 -1
  14. package/es/components/booking/info/service2/utils.d.ts +1 -1
  15. package/es/components/booking/utils.d.ts +2 -2
  16. package/es/components/eftposPay/amount.d.ts +1 -1
  17. package/es/components/eftposPay/device.d.ts +1 -1
  18. package/es/components/eftposPay/hooks.d.ts +2 -2
  19. package/es/components/eftposPay/linkly/hooks/useTimeQuery.js +14 -6
  20. package/es/components/eftposPay/payo/config.js +70 -32
  21. package/es/components/eftposPay/payo/payment.d.ts +66 -0
  22. package/es/components/eftposPay/payo/payment.js +579 -0
  23. package/es/components/eftposPay/store/index.d.ts +6 -6
  24. package/es/components/eftposPay/utils/log/index.d.ts +110 -0
  25. package/es/components/eftposPay/utils/log/index.js +371 -0
  26. package/es/components/index.d.ts +2 -1
  27. package/es/components/index.js +2 -1
  28. package/es/components/pay/toC/PaymentMethods/WalletPass/serve.d.ts +6 -0
  29. package/es/components/pay/toC/PaymentMethods/WalletPass/utils.js +4 -2
  30. package/es/components/pay/toC/PaymentMethods/components/PaymentReturnContent/index.js +2 -0
  31. package/es/components/pay/toC/PaymentMethods/components/PaymentReturnContent/index.less +13 -3
  32. package/es/components/pay/toC/locales.d.ts +3 -0
  33. package/es/components/pay/toC/locales.js +6 -3
  34. package/es/components/wallet/Detail/index.js +34 -2
  35. package/es/components/wallet/Detail/index.less +11 -0
  36. package/es/components/wallet/Detail/locales.d.ts +6 -0
  37. package/es/components/wallet/Detail/locales.js +14 -2
  38. package/es/components/wallet/Voucher/index.js +11 -10
  39. package/es/components/wallet/components/WalletCard.js +5 -1
  40. package/es/components/wallet/index.js +4 -2
  41. package/es/components/wallet/serve.d.ts +7 -0
  42. package/es/components/wallet/utils.d.ts +48 -0
  43. package/es/components/wallet/utils.js +342 -0
  44. package/es/index.d.ts +3 -2
  45. package/es/index.js +4 -3
  46. package/es/plus/walletPassGallery/components/passDetail/index.js +72 -28
  47. package/es/plus/walletPassGallery/index.js +4 -2
  48. package/es/plus/walletPassGallery/serve.d.ts +2 -0
  49. package/es/plus/walletPassGallery/serve.js +1 -1
  50. package/lib/components/Sales/Summary/utils.d.ts +1 -1
  51. package/lib/components/appointmentBooking/components/Voucher/index.js +1 -0
  52. package/lib/components/booking/components/voucher/index.js +3 -1
  53. package/lib/components/booking/info/service2/utils.d.ts +1 -1
  54. package/lib/components/booking/utils.d.ts +2 -2
  55. package/lib/components/eftposPay/amount.d.ts +1 -1
  56. package/lib/components/eftposPay/device.d.ts +1 -1
  57. package/lib/components/eftposPay/hooks.d.ts +2 -2
  58. package/lib/components/eftposPay/linkly/hooks/useTimeQuery.js +12 -6
  59. package/lib/components/eftposPay/payo/config.js +98 -73
  60. package/lib/components/eftposPay/payo/payment.d.ts +66 -0
  61. package/lib/components/eftposPay/payo/payment.js +357 -0
  62. package/lib/components/eftposPay/store/index.d.ts +6 -6
  63. package/lib/components/eftposPay/utils/log/index.d.ts +110 -0
  64. package/lib/components/eftposPay/utils/log/index.js +294 -0
  65. package/lib/components/index.d.ts +2 -1
  66. package/lib/components/index.js +3 -0
  67. package/lib/components/pay/toC/PaymentMethods/WalletPass/serve.d.ts +6 -0
  68. package/lib/components/pay/toC/PaymentMethods/WalletPass/utils.js +4 -2
  69. package/lib/components/pay/toC/PaymentMethods/components/PaymentReturnContent/index.js +1 -1
  70. package/lib/components/pay/toC/PaymentMethods/components/PaymentReturnContent/index.less +13 -3
  71. package/lib/components/pay/toC/locales.d.ts +3 -0
  72. package/lib/components/pay/toC/locales.js +6 -3
  73. package/lib/components/wallet/Detail/index.js +31 -3
  74. package/lib/components/wallet/Detail/index.less +11 -0
  75. package/lib/components/wallet/Detail/locales.d.ts +6 -0
  76. package/lib/components/wallet/Detail/locales.js +14 -2
  77. package/lib/components/wallet/Voucher/index.js +8 -8
  78. package/lib/components/wallet/components/WalletCard.js +4 -0
  79. package/lib/components/wallet/index.js +2 -2
  80. package/lib/components/wallet/serve.d.ts +7 -0
  81. package/lib/components/wallet/utils.d.ts +48 -0
  82. package/lib/components/wallet/utils.js +287 -0
  83. package/lib/index.d.ts +3 -2
  84. package/lib/index.js +5 -2
  85. package/lib/plus/walletPassGallery/components/passDetail/index.js +46 -12
  86. package/lib/plus/walletPassGallery/index.js +4 -2
  87. package/lib/plus/walletPassGallery/serve.d.ts +2 -0
  88. package/lib/plus/walletPassGallery/serve.js +1 -1
  89. package/lowcode/wallet-pass-detail/meta.ts +84 -0
  90. package/package.json +2 -2
@@ -0,0 +1,357 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/eftposPay/payo/payment.ts
30
+ var payment_exports = {};
31
+ __export(payment_exports, {
32
+ ActionType: () => ActionType,
33
+ usePayment: () => usePayment
34
+ });
35
+ module.exports = __toCommonJS(payment_exports);
36
+ var import_react = require("react");
37
+ var import_const = require("../const");
38
+ var import_log = __toESM(require("../utils/log"));
39
+ var QUERY_START_DELAY = 1e3 * 10;
40
+ var GLOBAL_TIMEOUT = 1e3 * 60 * 2;
41
+ var REQUEST_TIMEOUT = 1e3 * 10;
42
+ var QUERY_INTERVAL = 1e3 * 2;
43
+ var ActionType = /* @__PURE__ */ ((ActionType2) => {
44
+ ActionType2["Pay"] = "pay";
45
+ ActionType2["Refund"] = "refund";
46
+ ActionType2["Query"] = "query";
47
+ return ActionType2;
48
+ })(ActionType || {});
49
+ var isRequestFailed = (code) => {
50
+ return code && `${code}` !== import_const.PayStatus.Timeout && `${code}` !== import_const.PayStatus.PayTimeout;
51
+ };
52
+ var usePayment = (options) => {
53
+ const { payApi, refundApi, checkApi, shouldContinue = () => true } = options;
54
+ const payControllerRef = (0, import_react.useRef)(null);
55
+ const queryControllerRef = (0, import_react.useRef)(null);
56
+ const queryStartTimerRef = (0, import_react.useRef)(null);
57
+ const globalTimeoutTimerRef = (0, import_react.useRef)(
58
+ null
59
+ );
60
+ const requestTimeoutTimerRef = (0, import_react.useRef)(
61
+ null
62
+ );
63
+ const queryIntervalTimerRef = (0, import_react.useRef)(
64
+ null
65
+ );
66
+ const isFinishedRef = (0, import_react.useRef)(false);
67
+ const isQueryingRef = (0, import_react.useRef)(false);
68
+ const callbacksRef = (0, import_react.useRef)(null);
69
+ const isRequestTimeoutRef = (0, import_react.useRef)(false);
70
+ const currentQueryIdRef = (0, import_react.useRef)(0);
71
+ const currentRunIdRef = (0, import_react.useRef)(0);
72
+ const clean = (params) => {
73
+ const { clearCallbacks = true } = params || {};
74
+ console.log("🧹 清理所有资源", { clearCallbacks });
75
+ if (payControllerRef.current) {
76
+ payControllerRef.current.abort();
77
+ payControllerRef.current = null;
78
+ }
79
+ if (queryControllerRef.current) {
80
+ queryControllerRef.current.abort();
81
+ queryControllerRef.current = null;
82
+ }
83
+ if (queryStartTimerRef.current) {
84
+ clearTimeout(queryStartTimerRef.current);
85
+ queryStartTimerRef.current = null;
86
+ }
87
+ if (globalTimeoutTimerRef.current) {
88
+ clearTimeout(globalTimeoutTimerRef.current);
89
+ globalTimeoutTimerRef.current = null;
90
+ }
91
+ if (requestTimeoutTimerRef.current) {
92
+ clearTimeout(requestTimeoutTimerRef.current);
93
+ requestTimeoutTimerRef.current = null;
94
+ }
95
+ if (queryIntervalTimerRef.current) {
96
+ clearTimeout(queryIntervalTimerRef.current);
97
+ queryIntervalTimerRef.current = null;
98
+ }
99
+ isQueryingRef.current = false;
100
+ isFinishedRef.current = false;
101
+ isRequestTimeoutRef.current = false;
102
+ if (clearCallbacks !== false) {
103
+ callbacksRef.current = null;
104
+ }
105
+ };
106
+ const finish = () => {
107
+ if (!isFinishedRef.current) {
108
+ clean();
109
+ isFinishedRef.current = true;
110
+ import_log.default.clearLogs();
111
+ }
112
+ };
113
+ const handleFinalSuccess = (res, type) => {
114
+ var _a, _b;
115
+ if (isFinishedRef.current || !shouldContinue()) {
116
+ console.log(`⚠️ 已完成或不应继续处理,忽略${type}操作成功结果`);
117
+ return;
118
+ }
119
+ (_b = (_a = callbacksRef.current) == null ? void 0 : _a.onSuccess) == null ? void 0 : _b.call(_a, res);
120
+ import_log.default.addLog({ title: "最终结果:支付成功", content: { type, res } });
121
+ finish();
122
+ };
123
+ const handleFinalError = (error, type) => {
124
+ var _a, _b;
125
+ if (isFinishedRef.current || !shouldContinue()) {
126
+ console.log(`⚠️ 已完成或不应继续处理,忽略${type}操作错误`);
127
+ return;
128
+ }
129
+ (_b = (_a = callbacksRef.current) == null ? void 0 : _a.onError) == null ? void 0 : _b.call(_a, error);
130
+ import_log.default.addLog({
131
+ title: "最终结果:支付失败",
132
+ content: { type, error }
133
+ });
134
+ finish();
135
+ };
136
+ const createTimeoutPromise = (timeoutMs) => {
137
+ return new Promise((_, reject) => {
138
+ requestTimeoutTimerRef.current = setTimeout(() => {
139
+ console.log(`⏱️ 单次查询超时(${timeoutMs / 1e3}秒),强制终止`);
140
+ isRequestTimeoutRef.current = true;
141
+ if (queryControllerRef.current) {
142
+ queryControllerRef.current.abort();
143
+ }
144
+ reject(new Error("REQUEST_TIMEOUT"));
145
+ }, timeoutMs);
146
+ });
147
+ };
148
+ const performQuery = async (paymentNum) => {
149
+ if (isFinishedRef.current || !shouldContinue()) {
150
+ import_log.default.addLog({
151
+ title: "支付轮询前置校验:支付已完成或不应继续处理,取消查询"
152
+ });
153
+ return;
154
+ }
155
+ if (queryControllerRef.current) {
156
+ queryControllerRef.current.abort();
157
+ queryControllerRef.current = null;
158
+ }
159
+ if (requestTimeoutTimerRef.current) {
160
+ clearTimeout(requestTimeoutTimerRef.current);
161
+ requestTimeoutTimerRef.current = null;
162
+ }
163
+ const queryId = Date.now();
164
+ currentQueryIdRef.current = queryId;
165
+ isRequestTimeoutRef.current = false;
166
+ queryControllerRef.current = new AbortController();
167
+ const { signal } = queryControllerRef.current;
168
+ try {
169
+ import_log.default.addLog({ title: "支付轮询:开始单次查询" });
170
+ const res = await Promise.race([
171
+ checkApi({ number: paymentNum }, { signal }),
172
+ createTimeoutPromise(REQUEST_TIMEOUT)
173
+ ]);
174
+ if (requestTimeoutTimerRef.current) {
175
+ clearTimeout(requestTimeoutTimerRef.current);
176
+ requestTimeoutTimerRef.current = null;
177
+ }
178
+ if (queryId < currentQueryIdRef.current) {
179
+ import_log.default.addLog({ title: "支付轮询结果:过期的查询响应,忽略" });
180
+ return;
181
+ }
182
+ if (isFinishedRef.current || !shouldContinue()) {
183
+ import_log.default.addLog({ title: "支付轮询结果:支付已完成或不应继续处理" });
184
+ return;
185
+ }
186
+ if (res && `${res.code}` === "200") {
187
+ import_log.default.addLog({ title: "支付轮询结果:支付成功" });
188
+ handleFinalSuccess(res, "query" /* Query */);
189
+ return;
190
+ }
191
+ if (isRequestFailed(res == null ? void 0 : res.code)) {
192
+ import_log.default.addLog({
193
+ title: "支付轮询结果:有明确错误code,停止轮询",
194
+ content: res
195
+ });
196
+ handleFinalError(res, "query" /* Query */);
197
+ } else {
198
+ import_log.default.addLog({
199
+ title: "支付轮询结果:查询返回失败但没有明确code或超时code,继续轮询",
200
+ content: res
201
+ });
202
+ scheduleNextQuery(paymentNum);
203
+ }
204
+ } catch (error) {
205
+ if (requestTimeoutTimerRef.current) {
206
+ clearTimeout(requestTimeoutTimerRef.current);
207
+ requestTimeoutTimerRef.current = null;
208
+ }
209
+ if (queryId < currentQueryIdRef.current) {
210
+ import_log.default.addLog({
211
+ title: "支付轮询结果:error-过期的查询异常,忽略"
212
+ });
213
+ return;
214
+ }
215
+ if (isFinishedRef.current || !shouldContinue()) {
216
+ return;
217
+ }
218
+ if (isRequestTimeoutRef.current || (error == null ? void 0 : error.name) === "AbortError" || (error == null ? void 0 : error.message) === "REQUEST_TIMEOUT") {
219
+ import_log.default.addLog({
220
+ title: "支付轮询结果:error-请求被取消或超时,继续轮询"
221
+ });
222
+ scheduleNextQuery(paymentNum);
223
+ return;
224
+ }
225
+ if (isRequestFailed(error == null ? void 0 : error.code)) {
226
+ import_log.default.addLog({
227
+ title: "支付轮询结果:error-有明确错误code,停止轮询",
228
+ content: error
229
+ });
230
+ handleFinalError(error, "query" /* Query */);
231
+ } else {
232
+ import_log.default.addLog({
233
+ title: "支付轮询结果:error-无明确code或者code不是超时,继续轮询",
234
+ content: error
235
+ });
236
+ scheduleNextQuery(paymentNum);
237
+ }
238
+ }
239
+ };
240
+ const scheduleNextQuery = (paymentNum) => {
241
+ if (isFinishedRef.current || !shouldContinue()) {
242
+ return;
243
+ }
244
+ if (queryIntervalTimerRef.current) {
245
+ clearTimeout(queryIntervalTimerRef.current);
246
+ }
247
+ queryIntervalTimerRef.current = setTimeout(() => {
248
+ import_log.default.addLog({ title: "支付轮询:安排下一次查询" });
249
+ performQuery(paymentNum);
250
+ }, QUERY_INTERVAL);
251
+ };
252
+ const startQuery = (paymentNum) => {
253
+ if (isFinishedRef.current || !shouldContinue() || isQueryingRef.current) {
254
+ return;
255
+ }
256
+ isQueryingRef.current = true;
257
+ globalTimeoutTimerRef.current = setTimeout(() => {
258
+ if (isFinishedRef.current) {
259
+ return;
260
+ }
261
+ console.log("⏱️ 轮询全局超时(2分钟),终止所有请求");
262
+ import_log.default.addLog({ title: "轮询全局超时(2分钟),终止所有请求" });
263
+ handleFinalError(
264
+ { code: import_const.PayStatus.Timeout, message: "交易超时" },
265
+ "query" /* Query */
266
+ );
267
+ }, GLOBAL_TIMEOUT);
268
+ performQuery(paymentNum);
269
+ };
270
+ const run = async (options2) => {
271
+ const {
272
+ paymentType = "pay" /* Pay */,
273
+ params,
274
+ paymentNum,
275
+ callbacks
276
+ } = options2;
277
+ const runId = Date.now();
278
+ currentRunIdRef.current = runId;
279
+ const { pay_param_base64, ...otherParams } = params || {};
280
+ import_log.default.init(paymentNum, {
281
+ orderId: options2 == null ? void 0 : options2.orderId,
282
+ deviceId: options2 == null ? void 0 : options2.deviceId,
283
+ paymentType: `PAYO_${paymentType}`,
284
+ params: otherParams
285
+ });
286
+ isFinishedRef.current = true;
287
+ clean({ clearCallbacks: false });
288
+ callbacksRef.current = callbacks;
289
+ queryStartTimerRef.current = setTimeout(() => {
290
+ import_log.default.addLog({ title: "支付后10秒开始轮询" });
291
+ startQuery(paymentNum);
292
+ }, QUERY_START_DELAY);
293
+ payControllerRef.current = new AbortController();
294
+ const { signal } = payControllerRef.current;
295
+ try {
296
+ import_log.default.addLog({ title: "发起支付请求" });
297
+ const resultPromise = paymentType === "pay" /* Pay */ ? payApi : refundApi;
298
+ if (!resultPromise) {
299
+ throw new Error(
300
+ `${paymentType === "pay" /* Pay */ ? "支付" : "退款"}接口不存在`
301
+ );
302
+ }
303
+ const res = await (resultPromise == null ? void 0 : resultPromise(params, { signal }));
304
+ if (runId < currentRunIdRef.current) {
305
+ import_log.default.addLog({ title: "支付响应过期,忽略" });
306
+ return;
307
+ }
308
+ if (isFinishedRef.current || !shouldContinue()) {
309
+ import_log.default.addLog({ title: "支付返回时已完成或不应继续处理" });
310
+ return;
311
+ }
312
+ if (res && `${res.code}` === "200") {
313
+ import_log.default.addLog({ title: "支付接口成功" });
314
+ handleFinalSuccess(res, paymentType);
315
+ return;
316
+ }
317
+ if (isRequestFailed(res == null ? void 0 : res.code)) {
318
+ import_log.default.addLog({ title: "支付接口返回失败", content: { res } });
319
+ handleFinalError(res, "pay" /* Pay */);
320
+ } else {
321
+ import_log.default.addLog({
322
+ title: "支付超时或无明确错误,等待轮询结果",
323
+ content: { res }
324
+ });
325
+ }
326
+ } catch (error) {
327
+ if (runId < currentRunIdRef.current) {
328
+ import_log.default.addLog({ title: "支付响应过期,忽略" });
329
+ return;
330
+ }
331
+ if (isFinishedRef.current || !shouldContinue()) {
332
+ import_log.default.addLog({ title: "支付异常时已完成或不应继续处理" });
333
+ return;
334
+ }
335
+ if (isRequestFailed(error == null ? void 0 : error.code)) {
336
+ import_log.default.addLog({ title: "支付接口异常", content: { error } });
337
+ handleFinalError(error, paymentType);
338
+ } else {
339
+ import_log.default.addLog({
340
+ title: "支付超时或无明确错误,等待轮询结果",
341
+ content: { error }
342
+ });
343
+ }
344
+ }
345
+ };
346
+ const stop = () => {
347
+ import_log.default.addLog({ title: "手动停止支付流程" });
348
+ clean();
349
+ isFinishedRef.current = true;
350
+ };
351
+ return { run, stop, clean };
352
+ };
353
+ // Annotate the CommonJS export names for ESM import in node:
354
+ 0 && (module.exports = {
355
+ ActionType,
356
+ usePayment
357
+ });
@@ -174,7 +174,7 @@ export declare const updateCustom: (payload: {
174
174
  export declare const updateStatus: (status: 'loading' | 'warn' | 'fail' | 'success' | 'question') => {
175
175
  type: EActionTypes;
176
176
  payload: {
177
- status: "loading" | "warn" | "success" | "fail" | "question";
177
+ status: "success" | "warn" | "loading" | "fail" | "question";
178
178
  };
179
179
  };
180
180
  /**
@@ -295,20 +295,20 @@ export declare const backUpFree: (payload: Partial<State>) => {
295
295
  name?: string | undefined;
296
296
  symbol?: string | undefined;
297
297
  amount?: string | number | undefined;
298
- mode?: "refund" | "pay" | "fullPay" | "query" | undefined;
298
+ mode?: "pay" | "fullPay" | "refund" | "query" | undefined;
299
299
  order_id?: string | number | undefined;
300
- eftpos?: "stripe" | "payo" | "tyro" | "windcave" | "linkly" | undefined;
301
- action?: "amount" | "pay" | "deviceList" | undefined;
300
+ eftpos?: "payo" | "tyro" | "windcave" | "stripe" | "linkly" | undefined;
301
+ action?: "amount" | "deviceList" | "pay" | undefined;
302
302
  key?: number | undefined;
303
303
  step?: number | undefined;
304
304
  title?: string | undefined;
305
305
  subTitle?: string | undefined;
306
- type?: "unset" | "step" | undefined;
306
+ type?: "step" | "unset" | undefined;
307
307
  render?: boolean | undefined;
308
308
  net?: boolean | undefined;
309
309
  component?: string | undefined;
310
310
  form?: string | undefined;
311
- status?: "loading" | "warn" | "success" | "fail" | "pedding" | "resove" | "reject" | "question" | undefined;
311
+ status?: "success" | "warn" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question" | undefined;
312
312
  warn?: string | undefined;
313
313
  steps?: {
314
314
  /** 用于重置当前步骤 */
@@ -0,0 +1,110 @@
1
+ export interface LogEntry {
2
+ /** 日志标题 */
3
+ title: string;
4
+ /** 日志内容 */
5
+ content?: any;
6
+ /** 支付时间(精确到毫秒) */
7
+ time: string;
8
+ }
9
+ interface PaymentLogRecord {
10
+ /** 交易记录号 */
11
+ number: string;
12
+ /** 订单ID */
13
+ orderId?: string | number;
14
+ /** 设备ID */
15
+ deviceId?: string | number;
16
+ /** 支付类型 */
17
+ paymentType?: string;
18
+ /** 创建时间 */
19
+ createdAt: string;
20
+ /** 日志条目列表 */
21
+ logs: LogEntry[];
22
+ }
23
+ declare class PaymentLogInstance {
24
+ private static instance;
25
+ /** 当前交易记录号 */
26
+ private currentNumber;
27
+ /** 当前日志记录 */
28
+ private currentRecord;
29
+ private constructor();
30
+ /**
31
+ * 获取单例实例
32
+ */
33
+ static getInstance(): PaymentLogInstance;
34
+ /**
35
+ * 初始化支付日志
36
+ * @param number 交易记录号
37
+ * @param options 初始化选项
38
+ */
39
+ init(number: string, options?: {
40
+ orderId?: string | number;
41
+ deviceId?: string | number;
42
+ paymentType?: string;
43
+ [key: string]: any;
44
+ }): void;
45
+ /**
46
+ * 添加日志条目
47
+ * @param title 日志标题
48
+ * @param content 日志内容
49
+ */
50
+ addLog(params: {
51
+ title: string;
52
+ content?: any;
53
+ }): void;
54
+ /**
55
+ * 构建日志内容
56
+ * @param record 日志记录
57
+ * @returns 格式化的日志内容数组
58
+ */
59
+ private buildLogContent;
60
+ /**
61
+ * 发送单条日志记录到飞书
62
+ * @param record 日志记录
63
+ * @param isRestore 是否是恢复上传
64
+ */
65
+ private sendLogRecord;
66
+ /**
67
+ * 发送日志到飞书
68
+ * @param title 日志标题(可选,仅在需要自定义标题时使用)
69
+ */
70
+ sendLogs(title?: string): void;
71
+ /**
72
+ * 清除当前日志
73
+ * @param shouldSend 清除前是否发送到飞书,默认为 true
74
+ */
75
+ clearLogs(shouldSend?: boolean): void;
76
+ /**
77
+ * 检查并上传旧日志
78
+ */
79
+ private checkAndUploadOldLogs;
80
+ /**
81
+ * 获取所有支付日志对象
82
+ */
83
+ private getAllLogsObject;
84
+ /**
85
+ * 保存所有支付日志对象
86
+ */
87
+ private saveAllLogsObject;
88
+ /**
89
+ * 保存到 localStorage
90
+ */
91
+ private saveToLocalStorage;
92
+ /**
93
+ * 从 localStorage 中删除
94
+ */
95
+ private removeFromLocalStorage;
96
+ /**
97
+ * 获取所有旧日志
98
+ */
99
+ private getOldLogsFromLocalStorage;
100
+ /**
101
+ * 获取当前日志记录(用于调试)
102
+ */
103
+ getCurrentRecord(): PaymentLogRecord | null;
104
+ /**
105
+ * 获取当前交易号(用于调试)
106
+ */
107
+ getCurrentNumber(): string | null;
108
+ }
109
+ declare const paymentLog: PaymentLogInstance;
110
+ export default paymentLog;