@pisell/private-materials 6.8.83 → 6.8.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.
Files changed (134) 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 +10 -10
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/booking/components/footer/index.d.ts +1 -0
  12. package/es/components/booking/info/index.d.ts +1 -0
  13. package/es/components/checkout/PaymentModal.js +4 -2
  14. package/es/components/checkout/components/PaymentOptionsModule/index.js +1 -1
  15. package/es/components/eftposPay/aggregatePayment/hooks/useMicropay.d.ts +7 -0
  16. package/es/components/eftposPay/aggregatePayment/hooks/useMicropay.js +120 -0
  17. package/es/components/eftposPay/aggregatePayment/index.d.ts +3 -0
  18. package/es/components/eftposPay/aggregatePayment/index.js +3 -0
  19. package/es/components/eftposPay/aggregatePayment/service.d.ts +24 -0
  20. package/es/components/eftposPay/aggregatePayment/service.js +69 -0
  21. package/es/components/eftposPay/aggregatePayment/types.d.ts +106 -0
  22. package/es/components/eftposPay/aggregatePayment/types.js +65 -0
  23. package/es/components/eftposPay/aggregatePayment/utils/logs.d.ts +110 -0
  24. package/es/components/eftposPay/aggregatePayment/utils/logs.js +371 -0
  25. package/es/components/eftposPay/aggregatePayment/utils/payment.d.ts +139 -0
  26. package/es/components/eftposPay/aggregatePayment/utils/payment.js +1138 -0
  27. package/es/components/eftposPay/amount.d.ts +1 -1
  28. package/es/components/eftposPay/app.d.ts +1 -1
  29. package/es/components/eftposPay/app.js +5 -0
  30. package/es/components/eftposPay/component/fail/failCustom.js +16 -12
  31. package/es/components/eftposPay/component/fail/index.js +12 -5
  32. package/es/components/eftposPay/const.d.ts +6 -1
  33. package/es/components/eftposPay/const.js +3 -0
  34. package/es/components/eftposPay/device.d.ts +1 -1
  35. package/es/components/eftposPay/hooks.d.ts +3 -2
  36. package/es/components/eftposPay/hooks.js +12 -0
  37. package/es/components/eftposPay/huifu/Action.d.ts +8 -0
  38. package/es/components/eftposPay/huifu/Action.js +146 -0
  39. package/es/components/eftposPay/huifu/const.d.ts +5 -0
  40. package/es/components/eftposPay/huifu/const.js +70 -0
  41. package/es/components/eftposPay/huifu/hooks.d.ts +25 -0
  42. package/es/components/eftposPay/huifu/hooks.js +184 -0
  43. package/es/components/eftposPay/huifu/index.d.ts +5 -0
  44. package/es/components/eftposPay/huifu/index.js +196 -0
  45. package/es/components/eftposPay/huifu/index.less +180 -0
  46. package/es/components/eftposPay/huifu/types.d.ts +14 -0
  47. package/es/components/eftposPay/huifu/types.js +1 -0
  48. package/es/components/eftposPay/index.js +5 -1
  49. package/es/components/eftposPay/locales.d.ts +36 -0
  50. package/es/components/eftposPay/locales.js +42 -3
  51. package/es/components/eftposPay/manufacturer.d.ts +1 -0
  52. package/es/components/eftposPay/manufacturer.js +5 -0
  53. package/es/components/eftposPay/pay.js +6 -2
  54. package/es/components/eftposPay/store/index.d.ts +11 -4
  55. package/es/components/kioskSkuDetail/index.d.ts +3 -0
  56. package/es/components/kioskSkuDetail/index.js +266 -173
  57. package/es/components/kioskSkuDetail/index.less +49 -7
  58. package/es/components/kioskSkuDetail/locales.d.ts +6 -0
  59. package/es/components/kioskSkuDetail/locales.js +9 -3
  60. package/es/components/pay/toB/components/Cache/index.d.ts +1 -0
  61. package/es/components/pay/toB/components/EFTPOS/index.js +8 -1
  62. package/es/components/pay/toB/types/index.d.ts +1 -0
  63. package/es/components/pay/toC/PaymentList/serve.js +14 -0
  64. package/es/components/pay/toC/PaymentMethods/MWCreditCard/tds2.js +7 -6
  65. package/es/components/ticketBooking/components/ticketBooking/index.d.ts +1 -0
  66. package/es/components/ticketBooking/index.d.ts +16 -0
  67. package/es/plus/skuOptionsSelection/components/VariantCard/index.js +1 -1
  68. package/es/plus/skuOptionsSelection/locales.d.ts +3 -0
  69. package/es/plus/skuOptionsSelection/locales.js +3 -0
  70. package/es/pro/Login2.0/components/LoginCodeInput.js +36 -3
  71. package/es/pro/Login2.0/steps/CodeInput.js +37 -7
  72. package/lib/components/booking/components/footer/index.d.ts +1 -0
  73. package/lib/components/booking/info/index.d.ts +1 -0
  74. package/lib/components/checkout/PaymentModal.js +5 -2
  75. package/lib/components/checkout/components/PaymentOptionsModule/index.js +2 -1
  76. package/lib/components/eftposPay/aggregatePayment/hooks/useMicropay.d.ts +7 -0
  77. package/lib/components/eftposPay/aggregatePayment/hooks/useMicropay.js +133 -0
  78. package/lib/components/eftposPay/aggregatePayment/index.d.ts +3 -0
  79. package/lib/components/eftposPay/aggregatePayment/index.js +42 -0
  80. package/lib/components/eftposPay/aggregatePayment/service.d.ts +24 -0
  81. package/lib/components/eftposPay/aggregatePayment/service.js +81 -0
  82. package/lib/components/eftposPay/aggregatePayment/types.d.ts +106 -0
  83. package/lib/components/eftposPay/aggregatePayment/types.js +74 -0
  84. package/lib/components/eftposPay/aggregatePayment/utils/logs.d.ts +110 -0
  85. package/lib/components/eftposPay/aggregatePayment/utils/logs.js +294 -0
  86. package/lib/components/eftposPay/aggregatePayment/utils/payment.d.ts +139 -0
  87. package/lib/components/eftposPay/aggregatePayment/utils/payment.js +752 -0
  88. package/lib/components/eftposPay/amount.d.ts +1 -1
  89. package/lib/components/eftposPay/app.d.ts +1 -1
  90. package/lib/components/eftposPay/app.js +5 -0
  91. package/lib/components/eftposPay/component/fail/failCustom.js +15 -9
  92. package/lib/components/eftposPay/component/fail/index.js +4 -1
  93. package/lib/components/eftposPay/const.d.ts +6 -1
  94. package/lib/components/eftposPay/const.js +3 -0
  95. package/lib/components/eftposPay/device.d.ts +1 -1
  96. package/lib/components/eftposPay/hooks.d.ts +3 -2
  97. package/lib/components/eftposPay/hooks.js +16 -0
  98. package/lib/components/eftposPay/huifu/Action.d.ts +8 -0
  99. package/lib/components/eftposPay/huifu/Action.js +174 -0
  100. package/lib/components/eftposPay/huifu/const.d.ts +5 -0
  101. package/lib/components/eftposPay/huifu/const.js +86 -0
  102. package/lib/components/eftposPay/huifu/hooks.d.ts +25 -0
  103. package/lib/components/eftposPay/huifu/hooks.js +186 -0
  104. package/lib/components/eftposPay/huifu/index.d.ts +5 -0
  105. package/lib/components/eftposPay/huifu/index.js +200 -0
  106. package/lib/components/eftposPay/huifu/index.less +180 -0
  107. package/lib/components/eftposPay/huifu/types.d.ts +14 -0
  108. package/lib/components/eftposPay/huifu/types.js +17 -0
  109. package/lib/components/eftposPay/index.js +5 -1
  110. package/lib/components/eftposPay/locales.d.ts +36 -0
  111. package/lib/components/eftposPay/locales.js +42 -3
  112. package/lib/components/eftposPay/manufacturer.d.ts +1 -0
  113. package/lib/components/eftposPay/manufacturer.js +7 -0
  114. package/lib/components/eftposPay/pay.js +3 -2
  115. package/lib/components/eftposPay/store/index.d.ts +11 -4
  116. package/lib/components/kioskSkuDetail/index.d.ts +3 -0
  117. package/lib/components/kioskSkuDetail/index.js +180 -113
  118. package/lib/components/kioskSkuDetail/index.less +49 -7
  119. package/lib/components/kioskSkuDetail/locales.d.ts +6 -0
  120. package/lib/components/kioskSkuDetail/locales.js +9 -3
  121. package/lib/components/pay/toB/components/Cache/index.d.ts +1 -0
  122. package/lib/components/pay/toB/components/EFTPOS/index.js +8 -1
  123. package/lib/components/pay/toB/types/index.d.ts +1 -0
  124. package/lib/components/pay/toC/PaymentList/serve.js +15 -0
  125. package/lib/components/pay/toC/PaymentMethods/MWCreditCard/tds2.js +7 -6
  126. package/lib/components/ticketBooking/components/ticketBooking/index.d.ts +1 -0
  127. package/lib/components/ticketBooking/index.d.ts +16 -0
  128. package/lib/plus/skuOptionsSelection/components/VariantCard/index.js +2 -0
  129. package/lib/plus/skuOptionsSelection/locales.d.ts +3 -0
  130. package/lib/plus/skuOptionsSelection/locales.js +3 -0
  131. package/lib/pro/Login2.0/components/LoginCodeInput.js +26 -4
  132. package/lib/pro/Login2.0/steps/CodeInput.js +27 -5
  133. package/lowcode/kiosk-sku-detail/meta.ts +229 -94
  134. package/package.json +1 -1
@@ -0,0 +1,752 @@
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/aggregatePayment/utils/payment.ts
30
+ var payment_exports = {};
31
+ __export(payment_exports, {
32
+ default: () => payment_default
33
+ });
34
+ module.exports = __toCommonJS(payment_exports);
35
+ var import_const = require("../../const");
36
+ var import_logs = __toESM(require("./logs"));
37
+ var import_service = require("../service");
38
+ var import_helper = require("../../helper");
39
+ var import_types = require("../types");
40
+ var PaymentMethod = class {
41
+ /** 初始化参数 */
42
+ initOptions;
43
+ // 交易号
44
+ paymentNum;
45
+ // 订单ID
46
+ orderId;
47
+ // 设备ID
48
+ deviceId;
49
+ // 统一回调函数
50
+ callback;
51
+ // 检查是否应该继续处理结果
52
+ shouldContinue;
53
+ // 配置
54
+ config = {};
55
+ // 主请求的 AbortController(支付/退款等)
56
+ controller = null;
57
+ // 查询请求的 AbortController
58
+ queryController = null;
59
+ // 开始轮询的定时器
60
+ queryStartTimer = null;
61
+ // 全局超时定时器
62
+ globalTimeoutTimer = null;
63
+ // 单次请求超时定时器
64
+ requestTimeoutTimer = null;
65
+ // 轮询间隔定时器
66
+ queryIntervalTimer = null;
67
+ // 是否已经完成(成功或失败)
68
+ isFinished = false;
69
+ // 是否正在轮询中
70
+ isQuerying = false;
71
+ // 当前操作类型
72
+ currentActionType = null;
73
+ // 当前查询的唯一ID(时间戳),用于防止过期响应被处理
74
+ currentQueryId = "";
75
+ // 当前执行的唯一ID(时间戳),用于防止旧的请求响应被处理
76
+ currentRunId = "";
77
+ // 当前查询API
78
+ currentQueryApi = null;
79
+ constructor(options) {
80
+ this.initOptions = options;
81
+ this.paymentNum = options.paymentNum;
82
+ this.orderId = options.orderId;
83
+ this.deviceId = options.deviceId;
84
+ this.callback = options.callback;
85
+ this.shouldContinue = options.shouldContinue || (() => true);
86
+ this.config = options.config || {};
87
+ import_logs.default.init(this.paymentNum, {
88
+ orderId: this.orderId,
89
+ deviceId: this.deviceId,
90
+ paymentCode: (options == null ? void 0 : options.paymentCode) || ""
91
+ });
92
+ }
93
+ /**
94
+ * 判断请求是否需要等待轮询结果
95
+ * 1. 有明确错误code且不是超时和支付超时,则直接失败
96
+ * @param code 错误码
97
+ */
98
+ isRequestFailed(code) {
99
+ return code && `${code}` !== import_const.PayStatus.Timeout && `${code}` !== import_const.PayStatus.PayTimeout;
100
+ }
101
+ /**
102
+ * 清理定时器和请求控制器
103
+ */
104
+ cleanupTimersAndControllers() {
105
+ if (this.controller) {
106
+ this.controller.abort();
107
+ this.controller = null;
108
+ }
109
+ if (this.queryController) {
110
+ this.queryController.abort();
111
+ this.queryController = null;
112
+ }
113
+ if (this.queryStartTimer) {
114
+ clearTimeout(this.queryStartTimer);
115
+ this.queryStartTimer = null;
116
+ }
117
+ if (this.globalTimeoutTimer) {
118
+ clearTimeout(this.globalTimeoutTimer);
119
+ this.globalTimeoutTimer = null;
120
+ }
121
+ if (this.requestTimeoutTimer) {
122
+ clearTimeout(this.requestTimeoutTimer);
123
+ this.requestTimeoutTimer = null;
124
+ }
125
+ if (this.queryIntervalTimer) {
126
+ clearTimeout(this.queryIntervalTimer);
127
+ this.queryIntervalTimer = null;
128
+ }
129
+ }
130
+ /**
131
+ * 清理资源并重置状态
132
+ * @param markAsFinished 是否标记为已完成(true: 操作完成; false: 准备新操作)
133
+ */
134
+ clean(markAsFinished = false) {
135
+ console.log("🧹 清理资源", { markAsFinished });
136
+ this.cleanupTimersAndControllers();
137
+ this.isQuerying = false;
138
+ this.isFinished = markAsFinished;
139
+ this.currentQueryApi = null;
140
+ this.currentActionType = null;
141
+ }
142
+ /**
143
+ * 开始新的操作流程(统一的流程初始化)
144
+ * @param actionType 操作类型
145
+ * @returns 本次流程的唯一ID
146
+ */
147
+ startNewOperation(actionType) {
148
+ const runId = (0, import_helper.getUuid)();
149
+ this.currentRunId = runId;
150
+ import_logs.default.addLog({
151
+ title: `触发新的操作:${actionType}`,
152
+ content: { actionType, runId }
153
+ });
154
+ this.clean(false);
155
+ this.currentActionType = actionType;
156
+ return runId;
157
+ }
158
+ /**
159
+ * 处理操作过程
160
+ */
161
+ handleOperationProcess(res) {
162
+ if (!this.currentActionType) {
163
+ return;
164
+ }
165
+ const actionType = this.currentActionType;
166
+ try {
167
+ this.callback(this, {
168
+ status: import_types.EPaymentStatus.Processing,
169
+ actionType,
170
+ data: res
171
+ });
172
+ } catch (error) {
173
+ console.error("⚠️ 回调执行出错:", error);
174
+ import_logs.default.addLog({ title: "回调执行出错", content: error });
175
+ }
176
+ }
177
+ /**
178
+ * 处理成功结果
179
+ */
180
+ handleOperationSuccess(res) {
181
+ if (this.isFinished || !this.shouldContinue() || !this.currentActionType) {
182
+ import_logs.default.addLog({
183
+ title: "操作结果:已完成或不应继续处理,忽略操作成功结果",
184
+ content: { actionType: this.currentActionType, res }
185
+ });
186
+ return;
187
+ }
188
+ const actionType = this.currentActionType;
189
+ import_logs.default.addLog({
190
+ title: "操作结果:成功",
191
+ content: { actionType, res }
192
+ });
193
+ this.clean(true);
194
+ try {
195
+ this.callback(this, {
196
+ status: import_types.EPaymentStatus.Success,
197
+ actionType,
198
+ data: res
199
+ });
200
+ } catch (error) {
201
+ console.error("⚠️ 回调执行出错:", error);
202
+ import_logs.default.addLog({ title: "回调执行出错", content: error });
203
+ }
204
+ }
205
+ /**
206
+ * 处理错误(最终失败)
207
+ * @param error 错误信息
208
+ */
209
+ handleOperationError(error) {
210
+ if (this.isFinished || !this.shouldContinue() || !this.currentActionType) {
211
+ console.log(`⚠️ 已完成或不应继续处理,忽略操作错误`);
212
+ return;
213
+ }
214
+ const actionType = this.currentActionType;
215
+ import_logs.default.addLog({
216
+ title: "操作结果:失败",
217
+ content: { actionType, error }
218
+ });
219
+ this.clean(true);
220
+ try {
221
+ this.callback(this, {
222
+ status: import_types.EPaymentStatus.Failed,
223
+ actionType,
224
+ data: error
225
+ });
226
+ } catch (err) {
227
+ console.error("⚠️ 回调执行出错:", err);
228
+ import_logs.default.addLog({ title: "回调执行出错", content: err });
229
+ }
230
+ }
231
+ /**
232
+ * 处理接口响应
233
+ */
234
+ handleResponse(res) {
235
+ var _a;
236
+ if (!this.currentActionType) {
237
+ return;
238
+ }
239
+ let needContinue = true;
240
+ const { external_unified_status } = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.external_unified_response) || {};
241
+ switch (external_unified_status) {
242
+ case import_types.EPaymentStatus.Success:
243
+ this.handleOperationSuccess(res);
244
+ needContinue = false;
245
+ break;
246
+ case import_types.EPaymentStatus.Failed:
247
+ this.handleOperationError(res);
248
+ needContinue = false;
249
+ break;
250
+ case import_types.EPaymentStatus.Processing:
251
+ default:
252
+ this.handleOperationProcess(res);
253
+ needContinue = true;
254
+ break;
255
+ }
256
+ return needContinue;
257
+ }
258
+ /**
259
+ * 创建超时 Promise
260
+ */
261
+ createTimeoutPromise(timeoutMs) {
262
+ return new Promise((_, reject) => {
263
+ this.requestTimeoutTimer = setTimeout(() => {
264
+ console.log(`⏱️ 单次查询超时(${timeoutMs / 1e3}秒),强制终止`);
265
+ if (this.queryController) {
266
+ this.queryController.abort();
267
+ }
268
+ reject(new Error("REQUEST_TIMEOUT"));
269
+ }, timeoutMs);
270
+ });
271
+ }
272
+ /**
273
+ * 单次查询请求
274
+ */
275
+ async performQuery(actionType) {
276
+ var _a, _b;
277
+ if (this.isFinished || !this.shouldContinue()) {
278
+ import_logs.default.addLog({
279
+ title: "查询前置校验:已完成或不应继续处理,取消查询"
280
+ });
281
+ return;
282
+ }
283
+ if (!this.currentQueryApi) {
284
+ import_logs.default.addLog({ title: "查询API未设置,取消查询" });
285
+ return;
286
+ }
287
+ if (this.queryController) {
288
+ this.queryController.abort();
289
+ this.queryController = null;
290
+ }
291
+ if (this.requestTimeoutTimer) {
292
+ clearTimeout(this.requestTimeoutTimer);
293
+ this.requestTimeoutTimer = null;
294
+ }
295
+ const queryId = (0, import_helper.getUuid)();
296
+ this.currentQueryId = queryId;
297
+ this.queryController = new AbortController();
298
+ const { signal } = this.queryController;
299
+ import_logs.default.addLog({ title: "查询轮询:开始单次查询" });
300
+ try {
301
+ const res = await Promise.race([
302
+ this.currentQueryApi(
303
+ {
304
+ order_id: this.orderId,
305
+ unique_payment_number: this.paymentNum,
306
+ payment_code: (_a = this.initOptions) == null ? void 0 : _a.paymentCode,
307
+ request_version: queryId,
308
+ is_outer_response_info: 1
309
+ },
310
+ { signal }
311
+ ),
312
+ this.createTimeoutPromise(import_types.REQUEST_TIMEOUT)
313
+ ]);
314
+ import_logs.default.addLog({
315
+ title: "查询轮询:单次查询返回",
316
+ content: { actionType, res }
317
+ });
318
+ if (this.requestTimeoutTimer) {
319
+ clearTimeout(this.requestTimeoutTimer);
320
+ this.requestTimeoutTimer = null;
321
+ }
322
+ if (((_b = res == null ? void 0 : res.data) == null ? void 0 : _b.request_version) !== this.currentQueryId) {
323
+ import_logs.default.addLog({ title: "查询轮询结果:过期的查询响应,忽略" });
324
+ return;
325
+ }
326
+ if (this.isFinished || !this.shouldContinue()) {
327
+ import_logs.default.addLog({ title: "查询轮询结果:已完成或不应继续处理" });
328
+ return;
329
+ }
330
+ if (res && `${res.code}` === "200") {
331
+ import_logs.default.addLog({ title: "查询轮询结果:查询成功" });
332
+ const needContinue = this.handleResponse(res);
333
+ if (needContinue) {
334
+ this.scheduleNextQuery(actionType);
335
+ }
336
+ return;
337
+ }
338
+ if (this.isRequestFailed(res == null ? void 0 : res.code)) {
339
+ import_logs.default.addLog({
340
+ title: "查询轮询结果:有明确错误code,停止轮询",
341
+ content: res
342
+ });
343
+ this.handleOperationError(res);
344
+ } else {
345
+ import_logs.default.addLog({
346
+ title: "查询轮询结果:查询返回失败但没有明确code或超时code,继续轮询",
347
+ content: res
348
+ });
349
+ this.scheduleNextQuery(actionType);
350
+ }
351
+ } catch (error) {
352
+ if (this.requestTimeoutTimer) {
353
+ clearTimeout(this.requestTimeoutTimer);
354
+ this.requestTimeoutTimer = null;
355
+ }
356
+ if (queryId !== this.currentQueryId) {
357
+ import_logs.default.addLog({
358
+ title: "查询轮询结果:error-过期的查询异常,忽略"
359
+ });
360
+ return;
361
+ }
362
+ if (this.isFinished || !this.shouldContinue()) {
363
+ return;
364
+ }
365
+ if ((error == null ? void 0 : error.name) === "AbortError" || (error == null ? void 0 : error.message) === "REQUEST_TIMEOUT") {
366
+ import_logs.default.addLog({
367
+ title: "查询轮询结果:error-请求被取消或超时,继续轮询"
368
+ });
369
+ this.scheduleNextQuery(actionType);
370
+ return;
371
+ }
372
+ if (this.isRequestFailed(error == null ? void 0 : error.code)) {
373
+ import_logs.default.addLog({
374
+ title: "查询轮询结果:error-有明确错误code,停止轮询",
375
+ content: error
376
+ });
377
+ this.handleOperationError(error);
378
+ } else {
379
+ import_logs.default.addLog({
380
+ title: "查询轮询结果:error-无明确code或者code不是超时,继续轮询",
381
+ content: error
382
+ });
383
+ this.scheduleNextQuery(actionType);
384
+ }
385
+ }
386
+ }
387
+ /**
388
+ * 安排下一次查询
389
+ */
390
+ scheduleNextQuery(actionType) {
391
+ var _a;
392
+ if (this.isFinished || !this.shouldContinue()) {
393
+ return;
394
+ }
395
+ if (this.queryIntervalTimer) {
396
+ clearTimeout(this.queryIntervalTimer);
397
+ }
398
+ if (((_a = this.config) == null ? void 0 : _a.hasQueryInterval) === false) {
399
+ import_logs.default.addLog({
400
+ title: "查询轮询:立即安排下一次查询",
401
+ content: { actionType }
402
+ });
403
+ this.performQuery(actionType);
404
+ } else {
405
+ this.queryIntervalTimer = setTimeout(() => {
406
+ import_logs.default.addLog({
407
+ title: "查询轮询:安排下一次查询",
408
+ content: { actionType }
409
+ });
410
+ this.performQuery(actionType);
411
+ }, import_types.QUERY_INTERVAL);
412
+ }
413
+ }
414
+ /**
415
+ * 开始轮询
416
+ */
417
+ startQuery(actionType) {
418
+ if (this.isFinished || !this.shouldContinue() || this.isQuerying) {
419
+ return;
420
+ }
421
+ this.isQuerying = true;
422
+ import_logs.default.addLog({ title: "开始轮询", content: { actionType } });
423
+ this.globalTimeoutTimer = setTimeout(() => {
424
+ if (this.isFinished) {
425
+ return;
426
+ }
427
+ import_logs.default.addLog({
428
+ title: "轮询全局超时(2分钟),终止所有请求",
429
+ content: { actionType }
430
+ });
431
+ this.handleOperationError({
432
+ code: import_const.PayStatus.Timeout,
433
+ message: "交易超时"
434
+ });
435
+ }, import_types.GLOBAL_TIMEOUT);
436
+ this.performQuery(actionType);
437
+ }
438
+ /**
439
+ * 获取操作API和查询API
440
+ */
441
+ getActionApi(actionType) {
442
+ let actionApi = null;
443
+ let queryApi = null;
444
+ switch (actionType) {
445
+ case import_types.ActionType.Pay:
446
+ actionApi = import_service.AGPTPayApi;
447
+ queryApi = import_service.AGPTQueryApi;
448
+ break;
449
+ case import_types.ActionType.PayAction:
450
+ actionApi = import_service.AGPTActionApi;
451
+ queryApi = import_service.AGPTQueryApi;
452
+ break;
453
+ case import_types.ActionType.PayQuery:
454
+ queryApi = import_service.AGPTQueryApi;
455
+ break;
456
+ case import_types.ActionType.Refund:
457
+ actionApi = import_service.AGPTRefundApi;
458
+ queryApi = import_service.AGPTRefundQueryApi;
459
+ break;
460
+ case import_types.ActionType.RefundAction:
461
+ actionApi = import_service.AGPTRefundActionApi;
462
+ queryApi = import_service.AGPTRefundQueryApi;
463
+ break;
464
+ case import_types.ActionType.RefundQuery:
465
+ queryApi = import_service.AGPTRefundQueryApi;
466
+ break;
467
+ }
468
+ return { actionApi, queryApi };
469
+ }
470
+ /**
471
+ * 执行纯查询操作(不需要先调用支付/退款接口)
472
+ */
473
+ async runQuery(options) {
474
+ const { actionType } = options;
475
+ this.startNewOperation(actionType);
476
+ const { queryApi } = this.getActionApi(actionType);
477
+ if (!queryApi) {
478
+ const error = new Error(`${actionType}查询接口不存在`);
479
+ this.handleOperationError(error);
480
+ return;
481
+ }
482
+ this.currentQueryApi = queryApi;
483
+ import_logs.default.addLog({ title: `开始${actionType}查询轮询` });
484
+ this.startQuery(actionType);
485
+ }
486
+ /**
487
+ * 执行操作的核心方法
488
+ */
489
+ async run(runOptions) {
490
+ var _a;
491
+ const { actionType, params } = runOptions;
492
+ const runId = this.startNewOperation(actionType);
493
+ const { pay_param_base64, ...otherParams } = params || {};
494
+ if (Object.keys(otherParams).length > 0) {
495
+ import_logs.default.addLog({
496
+ title: "请求参数",
497
+ content: { params: otherParams }
498
+ });
499
+ }
500
+ const { actionApi, queryApi } = this.getActionApi(actionType);
501
+ if (!actionApi) {
502
+ const error = new Error(`${actionType}接口不存在`);
503
+ this.handleOperationError(error);
504
+ return;
505
+ }
506
+ this.currentQueryApi = queryApi;
507
+ if (queryApi !== null) {
508
+ this.queryStartTimer = setTimeout(() => {
509
+ import_logs.default.addLog({
510
+ title: "操作后10秒开始轮询",
511
+ content: { actionType }
512
+ });
513
+ this.startQuery(actionType);
514
+ }, import_types.QUERY_START_DELAY);
515
+ }
516
+ this.controller = new AbortController();
517
+ const { signal } = this.controller;
518
+ try {
519
+ import_logs.default.addLog({
520
+ title: `发起${actionType}请求`,
521
+ content: { actionType, params }
522
+ });
523
+ const res = await actionApi(
524
+ { ...params, request_version: runId, is_outer_response_info: 1 },
525
+ { signal }
526
+ );
527
+ import_logs.default.addLog({
528
+ title: "请求返回",
529
+ content: { params, actionType, res }
530
+ });
531
+ if (runId != ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.request_version)) {
532
+ import_logs.default.addLog({ title: "响应过期,忽略", content: { actionType } });
533
+ return;
534
+ }
535
+ if (this.isFinished || !this.shouldContinue()) {
536
+ import_logs.default.addLog({
537
+ title: "返回时已完成或不应继续处理",
538
+ content: { actionType }
539
+ });
540
+ return;
541
+ }
542
+ if (res && `${res.code}` === "200") {
543
+ import_logs.default.addLog({
544
+ title: `${actionType}接口成功`,
545
+ content: { actionType, res }
546
+ });
547
+ const needContinue = this.handleResponse(res);
548
+ if (needContinue) {
549
+ import_logs.default.addLog({
550
+ title: `${actionType}接口返回processing,开始轮询`
551
+ });
552
+ if (this.queryStartTimer) {
553
+ clearTimeout(this.queryStartTimer);
554
+ this.queryStartTimer = null;
555
+ }
556
+ this.startQuery(actionType);
557
+ }
558
+ return;
559
+ }
560
+ if (this.isRequestFailed(res == null ? void 0 : res.code)) {
561
+ import_logs.default.addLog({
562
+ title: `${actionType}接口返回失败`,
563
+ content: { actionType, res }
564
+ });
565
+ this.handleOperationError(res);
566
+ } else {
567
+ import_logs.default.addLog({
568
+ title: `${actionType}超时或无明确错误,等待轮询结果`,
569
+ content: { actionType, res }
570
+ });
571
+ if (this.queryStartTimer) {
572
+ clearTimeout(this.queryStartTimer);
573
+ this.queryStartTimer = null;
574
+ }
575
+ this.startQuery(actionType);
576
+ }
577
+ } catch (error) {
578
+ if (runId !== this.currentRunId) {
579
+ import_logs.default.addLog({ title: "响应过期,忽略", content: { actionType } });
580
+ return;
581
+ }
582
+ if (this.isFinished || !this.shouldContinue()) {
583
+ import_logs.default.addLog({
584
+ title: "异常时已完成或不应继续处理",
585
+ content: { actionType }
586
+ });
587
+ return;
588
+ }
589
+ if (this.isRequestFailed(error == null ? void 0 : error.code)) {
590
+ import_logs.default.addLog({
591
+ title: `${actionType}接口异常`,
592
+ content: { actionType, error }
593
+ });
594
+ this.handleOperationError(error);
595
+ } else {
596
+ import_logs.default.addLog({
597
+ title: `${actionType}超时或无明确错误,等待轮询结果`,
598
+ content: { actionType, error }
599
+ });
600
+ }
601
+ }
602
+ }
603
+ /**
604
+ * 执行操作
605
+ */
606
+ async runAction(actionOptions) {
607
+ var _a;
608
+ const { actionType, params } = actionOptions;
609
+ const runActionId = this.startNewOperation(actionType);
610
+ const { pay_param_base64, ...otherParams } = params || {};
611
+ if (Object.keys(otherParams).length > 0) {
612
+ import_logs.default.addLog({
613
+ title: "请求参数",
614
+ content: { params: otherParams }
615
+ });
616
+ }
617
+ const { actionApi, queryApi } = this.getActionApi(actionType);
618
+ if (!actionApi) {
619
+ const error = new Error(`${actionType}操作接口不存在`);
620
+ this.handleOperationError(error);
621
+ return;
622
+ }
623
+ this.currentQueryApi = queryApi;
624
+ this.controller = new AbortController();
625
+ const { signal } = this.controller;
626
+ try {
627
+ const res = await actionApi(
628
+ {
629
+ ...params || {},
630
+ request_version: runActionId,
631
+ is_outer_response_info: 1
632
+ },
633
+ { signal }
634
+ );
635
+ if (this.isFinished || !this.shouldContinue()) {
636
+ import_logs.default.addLog({
637
+ title: "Action返回时已完成或不应继续处理,忽略",
638
+ content: { actionType }
639
+ });
640
+ return;
641
+ }
642
+ if (runActionId !== ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.request_version)) {
643
+ import_logs.default.addLog({
644
+ title: "Action响应过期,忽略",
645
+ content: { actionType }
646
+ });
647
+ return;
648
+ }
649
+ import_logs.default.addLog({
650
+ title: "Action请求返回,开始轮询",
651
+ content: { actionType }
652
+ });
653
+ this.startQuery(actionType);
654
+ } catch (error) {
655
+ if (this.isFinished || !this.shouldContinue()) {
656
+ import_logs.default.addLog({
657
+ title: "Action异常时已完成或不应继续处理,忽略",
658
+ content: { actionType }
659
+ });
660
+ return;
661
+ }
662
+ if (runActionId !== this.currentRunId) {
663
+ import_logs.default.addLog({
664
+ title: "Action响应过期,忽略",
665
+ content: { actionType }
666
+ });
667
+ return;
668
+ }
669
+ import_logs.default.addLog({
670
+ title: "Action请求异常,开始轮询",
671
+ content: { actionType, error }
672
+ });
673
+ this.startQuery(actionType);
674
+ }
675
+ }
676
+ /**
677
+ * 支付
678
+ * @param params 支付参数
679
+ */
680
+ pay(params) {
681
+ this.run({
682
+ actionType: import_types.ActionType.Pay,
683
+ params
684
+ });
685
+ }
686
+ /**
687
+ * 支付取消
688
+ * @param params 取消参数
689
+ */
690
+ payAction(params) {
691
+ this.runAction({
692
+ actionType: import_types.ActionType.PayAction,
693
+ params
694
+ });
695
+ }
696
+ /**
697
+ * 退款
698
+ * @param params 退款参数
699
+ */
700
+ refund(params) {
701
+ this.run({
702
+ actionType: import_types.ActionType.Refund,
703
+ params
704
+ });
705
+ }
706
+ /**
707
+ * 退款取消
708
+ * @param params 取消参数
709
+ */
710
+ refundAction(params) {
711
+ this.runAction({
712
+ actionType: import_types.ActionType.RefundAction,
713
+ params
714
+ });
715
+ }
716
+ /**
717
+ * 支付查询(直接查询,带2分钟超时和轮询机制)
718
+ */
719
+ payQuery() {
720
+ this.runQuery({
721
+ actionType: import_types.ActionType.PayQuery
722
+ });
723
+ }
724
+ /**
725
+ * 退款查询(直接查询,带2分钟超时和轮询机制)
726
+ */
727
+ refundQuery() {
728
+ this.runQuery({
729
+ actionType: import_types.ActionType.RefundQuery
730
+ });
731
+ }
732
+ /**
733
+ * 停止操作,后续依然可以重新发起操作
734
+ */
735
+ stop() {
736
+ import_logs.default.addLog({
737
+ title: "停止操作",
738
+ content: { actionType: this.currentActionType }
739
+ });
740
+ this.clean(true);
741
+ }
742
+ /**
743
+ * 销毁实例(完全清理并上传日志)
744
+ * 注意:销毁后实例不可再使用
745
+ */
746
+ destroy() {
747
+ import_logs.default.addLog({ title: "销毁实例,完成所有流程" });
748
+ this.clean(true);
749
+ import_logs.default.clearLogs();
750
+ }
751
+ };
752
+ var payment_default = PaymentMethod;