@alipay/ams-checkout 0.0.1781004142-dev.14 → 0.0.1781004142-dev.15
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/ams-checkout.js +3 -3
- package/dist/ams-checkout.min.js +1 -1
- package/esm/core/component/element/elementController/index.js +53 -60
- package/esm/core/component/element/elementProcessor/paymentProcessor.js +25 -35
- package/esm/plugin/component/channel.js +44 -57
- package/esm/util/beforeConfirm.d.ts +12 -0
- package/esm/util/beforeConfirm.js +68 -0
- package/package.json +1 -1
|
@@ -37,6 +37,7 @@ import { ServiceProvider } from "../../../../foundation/service";
|
|
|
37
37
|
import { convertPaymentSession } from "../../../../foundation/utils/payment_context_utils";
|
|
38
38
|
import { ProductSceneEnum } from "../../../../types";
|
|
39
39
|
import { ELEMENT_SPM_MAP } from "../../../../util/spm-map";
|
|
40
|
+
import { executeWithTimeout, BEFORE_CONFIRM_TIMEOUT_MS } from "../../../../util/beforeConfirm";
|
|
40
41
|
import { ElementContainerService } from "../elementContainerService"; // 引入 ElementContainerService
|
|
41
42
|
import { IContainerStatus } from "../elementContainerService/containerService";
|
|
42
43
|
import { EventCenter as ElementEventCenter } from "../EventCenter/index";
|
|
@@ -374,7 +375,7 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
374
375
|
value: function () {
|
|
375
376
|
var _submitPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(submitParams) {
|
|
376
377
|
var _this3 = this;
|
|
377
|
-
var startEventId, res, logParams, isApplePay, paymentMethodType,
|
|
378
|
+
var startEventId, res, logParams, isApplePay, paymentMethodType, startTime, _yield$executeWithTim, shouldContinue, timedOut, recordResult, _recordResult, _recordResult2, _recordResult3, _recordResult4, _recordResult5, _logParams;
|
|
378
379
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
379
380
|
while (1) switch (_context4.prev = _context4.next) {
|
|
380
381
|
case 0:
|
|
@@ -404,42 +405,44 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
404
405
|
isApplePay = this.currentPaymentMethodType === 'APPLEPAY';
|
|
405
406
|
paymentMethodType = this.currentPaymentMethodType || 'UNKNOWN';
|
|
406
407
|
if (!(submitParams !== null && submitParams !== void 0 && submitParams.onBeforeConfirm && !isApplePay)) {
|
|
407
|
-
_context4.next =
|
|
408
|
+
_context4.next = 34;
|
|
408
409
|
break;
|
|
409
410
|
}
|
|
410
|
-
BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
411
411
|
this.serviceMap.Log.logInfo({
|
|
412
412
|
title: 'sdk_before_confirm_start'
|
|
413
413
|
}, {
|
|
414
414
|
paymentMethodType: paymentMethodType,
|
|
415
415
|
path: 'nonApplePay_sync'
|
|
416
416
|
});
|
|
417
|
-
_context4.prev =
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
417
|
+
_context4.prev = 11;
|
|
418
|
+
startTime = Date.now();
|
|
419
|
+
_context4.next = 15;
|
|
420
|
+
return executeWithTimeout(function () {
|
|
421
|
+
return submitParams.onBeforeConfirm();
|
|
422
422
|
});
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
shouldContinue
|
|
428
|
-
|
|
429
|
-
_context4.prev = 18;
|
|
430
|
-
clearTimeout(timerId);
|
|
431
|
-
return _context4.finish(18);
|
|
432
|
-
case 21:
|
|
433
|
-
if (!(shouldContinue === false)) {
|
|
434
|
-
_context4.next = 26;
|
|
423
|
+
case 15:
|
|
424
|
+
_yield$executeWithTim = _context4.sent;
|
|
425
|
+
shouldContinue = _yield$executeWithTim.result;
|
|
426
|
+
timedOut = _yield$executeWithTim.timedOut;
|
|
427
|
+
if (!(timedOut || !shouldContinue || Date.now() - startTime >= BEFORE_CONFIRM_TIMEOUT_MS)) {
|
|
428
|
+
_context4.next = 23;
|
|
435
429
|
break;
|
|
436
430
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
431
|
+
if (timedOut) {
|
|
432
|
+
this.serviceMap.Log.logError({
|
|
433
|
+
title: 'sdk_before_confirm_timeout'
|
|
434
|
+
}, {
|
|
435
|
+
paymentMethodType: paymentMethodType,
|
|
436
|
+
path: 'nonApplePay_sync'
|
|
437
|
+
});
|
|
438
|
+
} else {
|
|
439
|
+
this.serviceMap.Log.logInfo({
|
|
440
|
+
title: 'sdk_before_confirm_abort'
|
|
441
|
+
}, {
|
|
442
|
+
paymentMethodType: paymentMethodType,
|
|
443
|
+
path: 'nonApplePay_sync'
|
|
444
|
+
});
|
|
445
|
+
}
|
|
443
446
|
this.changeLoading(false);
|
|
444
447
|
this.elementEventCenter.endEvent(startEventId, {
|
|
445
448
|
eventCode: PaymentStatus.FAIL,
|
|
@@ -453,35 +456,25 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
453
456
|
needChangeSessionForRetry: false
|
|
454
457
|
}
|
|
455
458
|
});
|
|
456
|
-
case
|
|
459
|
+
case 23:
|
|
457
460
|
this.serviceMap.Log.logInfo({
|
|
458
461
|
title: 'sdk_before_confirm_success'
|
|
459
462
|
}, {
|
|
460
463
|
paymentMethodType: paymentMethodType,
|
|
461
464
|
path: 'nonApplePay_sync'
|
|
462
465
|
});
|
|
463
|
-
_context4.next =
|
|
466
|
+
_context4.next = 32;
|
|
464
467
|
break;
|
|
465
|
-
case
|
|
466
|
-
_context4.prev =
|
|
467
|
-
_context4.t0 = _context4["catch"](
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
});
|
|
476
|
-
} else {
|
|
477
|
-
this.serviceMap.Log.logError({
|
|
478
|
-
title: 'sdk_before_confirm_error'
|
|
479
|
-
}, {
|
|
480
|
-
paymentMethodType: paymentMethodType,
|
|
481
|
-
errorMessage: String((_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.message) || _context4.t0).slice(0, 200),
|
|
482
|
-
path: 'nonApplePay_sync'
|
|
483
|
-
});
|
|
484
|
-
}
|
|
468
|
+
case 26:
|
|
469
|
+
_context4.prev = 26;
|
|
470
|
+
_context4.t0 = _context4["catch"](11);
|
|
471
|
+
this.serviceMap.Log.logError({
|
|
472
|
+
title: 'sdk_before_confirm_error'
|
|
473
|
+
}, {
|
|
474
|
+
paymentMethodType: paymentMethodType,
|
|
475
|
+
errorMessage: String((_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.message) || _context4.t0).slice(0, 200),
|
|
476
|
+
path: 'nonApplePay_sync'
|
|
477
|
+
});
|
|
485
478
|
this.changeLoading(false);
|
|
486
479
|
this.elementEventCenter.endEvent(startEventId, {
|
|
487
480
|
eventCode: PaymentStatus.FAIL,
|
|
@@ -495,10 +488,10 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
495
488
|
needChangeSessionForRetry: false
|
|
496
489
|
}
|
|
497
490
|
});
|
|
498
|
-
case
|
|
499
|
-
_context4.next =
|
|
491
|
+
case 32:
|
|
492
|
+
_context4.next = 35;
|
|
500
493
|
break;
|
|
501
|
-
case
|
|
494
|
+
case 34:
|
|
502
495
|
if (!(submitParams !== null && submitParams !== void 0 && submitParams.onBeforeConfirm)) {
|
|
503
496
|
this.serviceMap.Log.logInfo({
|
|
504
497
|
title: 'sdk_before_confirm_skip'
|
|
@@ -507,10 +500,10 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
507
500
|
path: isApplePay ? 'applePay_eventBridge' : 'nonApplePay_sync'
|
|
508
501
|
});
|
|
509
502
|
}
|
|
510
|
-
case
|
|
503
|
+
case 35:
|
|
511
504
|
recordResult = null;
|
|
512
|
-
_context4.prev =
|
|
513
|
-
_context4.next =
|
|
505
|
+
_context4.prev = 36;
|
|
506
|
+
_context4.next = 39;
|
|
514
507
|
return new Promise( /*#__PURE__*/function () {
|
|
515
508
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(resolve) {
|
|
516
509
|
var that, recordResultCallback, params, processStep, hasBeforeConfirmForApplePay, hasAmount, hasCurrency, _yield$_this3$onValid2, _data, errorString, errorResult;
|
|
@@ -667,10 +660,10 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
667
660
|
return _ref3.apply(this, arguments);
|
|
668
661
|
};
|
|
669
662
|
}());
|
|
670
|
-
case
|
|
663
|
+
case 39:
|
|
671
664
|
return _context4.abrupt("return", _context4.sent);
|
|
672
|
-
case
|
|
673
|
-
_context4.prev =
|
|
665
|
+
case 40:
|
|
666
|
+
_context4.prev = 40;
|
|
674
667
|
_logParams = {
|
|
675
668
|
eventCode: (_recordResult = recordResult) === null || _recordResult === void 0 ? void 0 : _recordResult.status,
|
|
676
669
|
errorName: (_recordResult2 = recordResult) === null || _recordResult2 === void 0 || (_recordResult2 = _recordResult2.error) === null || _recordResult2 === void 0 ? void 0 : _recordResult2.code,
|
|
@@ -681,12 +674,12 @@ var ElementController = /*#__PURE__*/function () {
|
|
|
681
674
|
};
|
|
682
675
|
this.elementEventCenter.endEvent(startEventId, _logParams);
|
|
683
676
|
this.changeLoading(false);
|
|
684
|
-
return _context4.finish(
|
|
685
|
-
case
|
|
677
|
+
return _context4.finish(40);
|
|
678
|
+
case 45:
|
|
686
679
|
case "end":
|
|
687
680
|
return _context4.stop();
|
|
688
681
|
}
|
|
689
|
-
}, _callee4, this, [[
|
|
682
|
+
}, _callee4, this, [[11, 26], [36,, 40, 45]]);
|
|
690
683
|
}));
|
|
691
684
|
function submitPayment(_x) {
|
|
692
685
|
return _submitPayment.apply(this, arguments);
|
|
@@ -33,6 +33,7 @@ import { parseSessionData } from "../../index";
|
|
|
33
33
|
import { oneAccount, sdkAction } from "../mock";
|
|
34
34
|
import { generateIframeSrc as _generateIframeSrc, isElementPad, isElementPC, safeStringify } from "../util";
|
|
35
35
|
import BaseElementProcessor from "./baseElementProcessor";
|
|
36
|
+
import { executeWithTimeout, BEFORE_CONFIRM_TIMEOUT_MS } from "../../../../util/beforeConfirm";
|
|
36
37
|
var logger = new Logger(LogConfig, true);
|
|
37
38
|
var isExpressCheckout = function isExpressCheckout(extendInfo) {
|
|
38
39
|
try {
|
|
@@ -194,7 +195,7 @@ var PaymentProcessor = /*#__PURE__*/function (_BaseElementProcessor) {
|
|
|
194
195
|
// requests SDK layer to execute merchant's onBeforeConfirm callback via beforeConfirm event,
|
|
195
196
|
// and returns the result (continue/abort) to iframe via dispatchToApp.
|
|
196
197
|
this.eventCenter.listen(EVENT.beforeConfirm.name, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
197
|
-
var paymentMethodType,
|
|
198
|
+
var paymentMethodType, startTime, _yield$executeWithTim, rawResult, timedOut, shouldContinue;
|
|
198
199
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
199
200
|
while (1) switch (_context.prev = _context.next) {
|
|
200
201
|
case 0:
|
|
@@ -218,25 +219,24 @@ var PaymentProcessor = /*#__PURE__*/function (_BaseElementProcessor) {
|
|
|
218
219
|
});
|
|
219
220
|
return _context.abrupt("return");
|
|
220
221
|
case 5:
|
|
221
|
-
BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
222
222
|
logger.logInfo({
|
|
223
223
|
title: 'sdk_before_confirm_start'
|
|
224
224
|
}, {
|
|
225
225
|
paymentMethodType: paymentMethodType,
|
|
226
226
|
path: 'applePay_eventBridge'
|
|
227
227
|
});
|
|
228
|
-
_context.prev =
|
|
229
|
-
timeoutPromise = new Promise(function (_, reject) {
|
|
230
|
-
return setTimeout(function () {
|
|
231
|
-
return reject(new Error('onBeforeConfirm timed out'));
|
|
232
|
-
}, BEFORE_CONFIRM_TIMEOUT_MS);
|
|
233
|
-
});
|
|
228
|
+
_context.prev = 6;
|
|
234
229
|
startTime = Date.now();
|
|
235
|
-
_context.next =
|
|
236
|
-
return
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
230
|
+
_context.next = 10;
|
|
231
|
+
return executeWithTimeout(function () {
|
|
232
|
+
return _this2._onBeforeConfirm();
|
|
233
|
+
});
|
|
234
|
+
case 10:
|
|
235
|
+
_yield$executeWithTim = _context.sent;
|
|
236
|
+
rawResult = _yield$executeWithTim.result;
|
|
237
|
+
timedOut = _yield$executeWithTim.timedOut;
|
|
238
|
+
shouldContinue = rawResult; // 双重校验:timedOut(Promise race) + startTime(实际时间差),防止竞态误判
|
|
239
|
+
if (timedOut || Date.now() - startTime >= BEFORE_CONFIRM_TIMEOUT_MS) {
|
|
240
240
|
logger.logError({
|
|
241
241
|
title: 'sdk_before_confirm_timeout'
|
|
242
242
|
});
|
|
@@ -251,31 +251,21 @@ var PaymentProcessor = /*#__PURE__*/function (_BaseElementProcessor) {
|
|
|
251
251
|
event: EVENT.beforeConfirm.name,
|
|
252
252
|
data: {
|
|
253
253
|
success: true,
|
|
254
|
-
result: shouldContinue
|
|
254
|
+
result: !!shouldContinue
|
|
255
255
|
}
|
|
256
256
|
});
|
|
257
257
|
_context.next = 23;
|
|
258
258
|
break;
|
|
259
|
-
case
|
|
260
|
-
_context.prev =
|
|
261
|
-
_context.t0 = _context["catch"](
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
});
|
|
270
|
-
} else {
|
|
271
|
-
logger.logError({
|
|
272
|
-
title: 'sdk_before_confirm_error'
|
|
273
|
-
}, {
|
|
274
|
-
paymentMethodType: paymentMethodType,
|
|
275
|
-
errorMessage: String((_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message) || _context.t0).slice(0, 200),
|
|
276
|
-
path: 'applePay_eventBridge'
|
|
277
|
-
});
|
|
278
|
-
}
|
|
259
|
+
case 19:
|
|
260
|
+
_context.prev = 19;
|
|
261
|
+
_context.t0 = _context["catch"](6);
|
|
262
|
+
logger.logError({
|
|
263
|
+
title: 'sdk_before_confirm_error'
|
|
264
|
+
}, {
|
|
265
|
+
paymentMethodType: paymentMethodType,
|
|
266
|
+
errorMessage: String((_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message) || _context.t0).slice(0, 200),
|
|
267
|
+
path: 'applePay_eventBridge'
|
|
268
|
+
});
|
|
279
269
|
_this2.eventCenter.dispatchToApp({
|
|
280
270
|
event: EVENT.beforeConfirm.name,
|
|
281
271
|
data: {
|
|
@@ -287,7 +277,7 @@ var PaymentProcessor = /*#__PURE__*/function (_BaseElementProcessor) {
|
|
|
287
277
|
case "end":
|
|
288
278
|
return _context.stop();
|
|
289
279
|
}
|
|
290
|
-
}, _callee, null, [[
|
|
280
|
+
}, _callee, null, [[6, 19]]);
|
|
291
281
|
})));
|
|
292
282
|
}
|
|
293
283
|
}, {
|
|
@@ -17,6 +17,7 @@ import { getDoubleFaUrlFromSession } from "../../foundation/utils/web_app_url_ut
|
|
|
17
17
|
import { getApplePayPaymentSession, submitPayInfo } from "../../service";
|
|
18
18
|
import { EnvironmentEnum } from "../../types";
|
|
19
19
|
import { device, isEmpty } from "../../util";
|
|
20
|
+
import { executeWithTimeout, BEFORE_CONFIRM_TIMEOUT_MS } from "../../util/beforeConfirm";
|
|
20
21
|
import { APPLE_PAY_RECURRING_VERSION, APPLE_PAY_VERSION } from "../applepay/interface";
|
|
21
22
|
var APPLEPAYERRORENUM = /*#__PURE__*/function (APPLEPAYERRORENUM) {
|
|
22
23
|
APPLEPAYERRORENUM["APPLE_PAY_MISSING_DATA"] = "APPLE_PAY_MISSING_DATA";
|
|
@@ -281,7 +282,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
281
282
|
}();
|
|
282
283
|
_this.session.onpaymentauthorized = /*#__PURE__*/function () {
|
|
283
284
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(event) {
|
|
284
|
-
var exception, _event$payment, token, billingContact, shippingContact, _this$parseData, obj, _this$parseData$payme, requiredBillingContactFields, requiredShippingContactFields, _this$logger3, _this$logger4,
|
|
285
|
+
var exception, _event$payment, token, billingContact, shippingContact, _this$parseData, obj, _this$parseData$payme, requiredBillingContactFields, requiredShippingContactFields, _this$logger3, _this$logger4, _this$logger6, startTime, _yield$executeWithTim, rawResult, timedOut, shouldContinue, _this$logger5, _this$session2, _this$session2$comple, _this$logger7, _this$session3, _this$session3$comple, res, _this$logger8;
|
|
285
286
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
286
287
|
while (1) switch (_context3.prev = _context3.next) {
|
|
287
288
|
case 0:
|
|
@@ -295,7 +296,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
295
296
|
};
|
|
296
297
|
_event$payment = event === null || event === void 0 ? void 0 : event.payment, token = _event$payment.token, billingContact = _event$payment.billingContact, shippingContact = _event$payment.shippingContact;
|
|
297
298
|
if (!token) {
|
|
298
|
-
_context3.next =
|
|
299
|
+
_context3.next = 46;
|
|
299
300
|
break;
|
|
300
301
|
}
|
|
301
302
|
obj = {
|
|
@@ -319,33 +320,29 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
319
320
|
paymentMethodType: 'APPLEPAY',
|
|
320
321
|
path: 'applePay_chrome_sdk'
|
|
321
322
|
});
|
|
322
|
-
_context3.next =
|
|
323
|
+
_context3.next = 39;
|
|
323
324
|
break;
|
|
324
325
|
case 11:
|
|
325
326
|
// 清空回原始状态
|
|
326
327
|
_this.cancelReason = 'USER_CANCEL';
|
|
327
|
-
BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
328
328
|
(_this$logger4 = _this.logger) === null || _this$logger4 === void 0 || _this$logger4.logInfo({
|
|
329
329
|
title: 'sdk_before_confirm_start'
|
|
330
330
|
}, {
|
|
331
331
|
paymentMethodType: 'APPLEPAY',
|
|
332
332
|
path: 'applePay_chrome_sdk'
|
|
333
333
|
});
|
|
334
|
-
_context3.prev =
|
|
335
|
-
timerId = null;
|
|
336
|
-
timeoutPromise = new Promise(function (_, reject) {
|
|
337
|
-
timerId = setTimeout(function () {
|
|
338
|
-
return reject(new Error('onBeforeConfirm timed out'));
|
|
339
|
-
}, BEFORE_CONFIRM_TIMEOUT_MS);
|
|
340
|
-
});
|
|
334
|
+
_context3.prev = 13;
|
|
341
335
|
startTime = Date.now();
|
|
342
|
-
_context3.next =
|
|
343
|
-
return
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
336
|
+
_context3.next = 17;
|
|
337
|
+
return executeWithTimeout(function () {
|
|
338
|
+
return _this.onBeforeConfirm();
|
|
339
|
+
});
|
|
340
|
+
case 17:
|
|
341
|
+
_yield$executeWithTim = _context3.sent;
|
|
342
|
+
rawResult = _yield$executeWithTim.result;
|
|
343
|
+
timedOut = _yield$executeWithTim.timedOut;
|
|
344
|
+
shouldContinue = rawResult;
|
|
345
|
+
if (timedOut || Date.now() - startTime >= BEFORE_CONFIRM_TIMEOUT_MS) {
|
|
349
346
|
(_this$logger5 = _this.logger) === null || _this$logger5 === void 0 || _this$logger5.logError({
|
|
350
347
|
title: 'sdk_before_confirm_timeout'
|
|
351
348
|
});
|
|
@@ -357,7 +354,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
357
354
|
shouldContinue: shouldContinue
|
|
358
355
|
});
|
|
359
356
|
if (shouldContinue) {
|
|
360
|
-
_context3.next =
|
|
357
|
+
_context3.next = 29;
|
|
361
358
|
break;
|
|
362
359
|
}
|
|
363
360
|
_this.cancelReason = 'MERCHANT_ABORT';
|
|
@@ -367,29 +364,19 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
367
364
|
errorCode: 'MERCHANT_CONFIRM_ABORT'
|
|
368
365
|
});
|
|
369
366
|
return _context3.abrupt("return");
|
|
370
|
-
case
|
|
371
|
-
_context3.next =
|
|
367
|
+
case 29:
|
|
368
|
+
_context3.next = 39;
|
|
372
369
|
break;
|
|
373
|
-
case
|
|
374
|
-
_context3.prev =
|
|
375
|
-
_context3.t0 = _context3["catch"](
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
});
|
|
384
|
-
} else {
|
|
385
|
-
(_this$logger8 = _this.logger) === null || _this$logger8 === void 0 || _this$logger8.logError({
|
|
386
|
-
title: 'sdk_before_confirm_error'
|
|
387
|
-
}, {
|
|
388
|
-
paymentMethodType: 'APPLEPAY',
|
|
389
|
-
path: 'applePay_chrome_sdk',
|
|
390
|
-
errorMessage: String((_context3.t0 === null || _context3.t0 === void 0 ? void 0 : _context3.t0.message) || _context3.t0).slice(0, 200)
|
|
391
|
-
});
|
|
392
|
-
}
|
|
370
|
+
case 31:
|
|
371
|
+
_context3.prev = 31;
|
|
372
|
+
_context3.t0 = _context3["catch"](13);
|
|
373
|
+
(_this$logger7 = _this.logger) === null || _this$logger7 === void 0 || _this$logger7.logError({
|
|
374
|
+
title: 'sdk_before_confirm_error'
|
|
375
|
+
}, {
|
|
376
|
+
paymentMethodType: 'APPLEPAY',
|
|
377
|
+
path: 'applePay_chrome_sdk',
|
|
378
|
+
errorMessage: String((_context3.t0 === null || _context3.t0 === void 0 ? void 0 : _context3.t0.message) || _context3.t0).slice(0, 200)
|
|
379
|
+
});
|
|
393
380
|
_this.cancelReason = 'MERCHANT_ABORT';
|
|
394
381
|
(_this$session3 = _this.session) === null || _this$session3 === void 0 || (_this$session3$comple = _this$session3.completePayment) === null || _this$session3$comple === void 0 || _this$session3$comple.call(_this$session3, window.ApplePaySession.STATUS_FAILURE);
|
|
395
382
|
_this.abortSession();
|
|
@@ -397,25 +384,25 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
397
384
|
errorCode: 'MERCHANT_CONFIRM_ABORT'
|
|
398
385
|
});
|
|
399
386
|
return _context3.abrupt("return");
|
|
400
|
-
case
|
|
401
|
-
_context3.next =
|
|
387
|
+
case 39:
|
|
388
|
+
_context3.next = 41;
|
|
402
389
|
return _this.submitPay(obj);
|
|
403
|
-
case
|
|
390
|
+
case 41:
|
|
404
391
|
res = _context3.sent;
|
|
405
392
|
_this.setPayStatus(res);
|
|
406
393
|
resolve(res);
|
|
407
|
-
_context3.next =
|
|
394
|
+
_context3.next = 48;
|
|
408
395
|
break;
|
|
409
|
-
case
|
|
410
|
-
(_this$
|
|
396
|
+
case 46:
|
|
397
|
+
(_this$logger8 = _this.logger) === null || _this$logger8 === void 0 || _this$logger8.logError({
|
|
411
398
|
title: 'a3753.b103030.c386485.d507486'
|
|
412
399
|
});
|
|
413
400
|
exception();
|
|
414
|
-
case
|
|
401
|
+
case 48:
|
|
415
402
|
case "end":
|
|
416
403
|
return _context3.stop();
|
|
417
404
|
}
|
|
418
|
-
}, _callee3, null, [[
|
|
405
|
+
}, _callee3, null, [[13, 31]]);
|
|
419
406
|
}));
|
|
420
407
|
return function (_x2) {
|
|
421
408
|
return _ref3.apply(this, arguments);
|
|
@@ -423,13 +410,13 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
423
410
|
}();
|
|
424
411
|
_this.session.oncancel = function () {
|
|
425
412
|
if (_this.paymentStatus === PAYMENT_STATUS.PENDING) {
|
|
426
|
-
var _this$
|
|
427
|
-
(_this$
|
|
413
|
+
var _this$logger9;
|
|
414
|
+
(_this$logger9 = _this.logger) === null || _this$logger9 === void 0 || _this$logger9.logError({
|
|
428
415
|
title: 'a3753.b103030.c386485.d507497'
|
|
429
416
|
});
|
|
430
417
|
} else {
|
|
431
|
-
var _this$
|
|
432
|
-
(_this$
|
|
418
|
+
var _this$logger10;
|
|
419
|
+
(_this$logger10 = _this.logger) === null || _this$logger10 === void 0 || _this$logger10.logInfo({
|
|
433
420
|
title: 'a3753.b103030.c386485.d507498'
|
|
434
421
|
});
|
|
435
422
|
}
|
|
@@ -523,7 +510,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
523
510
|
key: "initApplePaySession",
|
|
524
511
|
value: function () {
|
|
525
512
|
var _initApplePaySession = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
526
|
-
var _this$
|
|
513
|
+
var _this$logger12, _this$parseData3, _this$logger11, _ref4, recurringInfo, version, _this$logger13;
|
|
527
514
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
528
515
|
while (1) switch (_context5.prev = _context5.next) {
|
|
529
516
|
case 0:
|
|
@@ -538,7 +525,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
538
525
|
_context5.next = 7;
|
|
539
526
|
break;
|
|
540
527
|
}
|
|
541
|
-
(_this$
|
|
528
|
+
(_this$logger11 = this.logger) === null || _this$logger11 === void 0 || _this$logger11.logError({
|
|
542
529
|
title: 'a3753.b103030.c386485.d507448'
|
|
543
530
|
});
|
|
544
531
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
@@ -546,7 +533,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
546
533
|
errorCode: APPLEPAYERRORENUM.APPLE_PAY_MISSING_DATA
|
|
547
534
|
}));
|
|
548
535
|
case 7:
|
|
549
|
-
(_this$
|
|
536
|
+
(_this$logger12 = this.logger) === null || _this$logger12 === void 0 || _this$logger12.logInfo({
|
|
550
537
|
title: 'a3753.b103030.c386485.d507459'
|
|
551
538
|
});
|
|
552
539
|
_context5.next = 10;
|
|
@@ -572,7 +559,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
572
559
|
case 19:
|
|
573
560
|
_context5.prev = 19;
|
|
574
561
|
_context5.t0 = _context5["catch"](0);
|
|
575
|
-
(_this$
|
|
562
|
+
(_this$logger13 = this.logger) === null || _this$logger13 === void 0 || _this$logger13.logError({
|
|
576
563
|
title: 'a3753.b103030.c386485.d507471'
|
|
577
564
|
});
|
|
578
565
|
return _context5.abrupt("return", Promise.reject({
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
2
|
+
/**
|
|
3
|
+
* 带超时的异步执行,始终清理定时器避免 unhandled promise rejection。
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 要执行的异步函数
|
|
6
|
+
* @param timeoutMs - 超时时间(毫秒),默认 15000
|
|
7
|
+
* @returns result 为 fn 的返回值(超时时为 undefined),timedOut 表示是否因超时返回
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeWithTimeout<T>(fn: () => Promise<T>, timeoutMs?: number): Promise<{
|
|
10
|
+
result: T | undefined;
|
|
11
|
+
timedOut: boolean;
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
|
+
export var BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 带超时的异步执行,始终清理定时器避免 unhandled promise rejection。
|
|
9
|
+
*
|
|
10
|
+
* @param fn - 要执行的异步函数
|
|
11
|
+
* @param timeoutMs - 超时时间(毫秒),默认 15000
|
|
12
|
+
* @returns result 为 fn 的返回值(超时时为 undefined),timedOut 表示是否因超时返回
|
|
13
|
+
*/
|
|
14
|
+
export function executeWithTimeout(_x) {
|
|
15
|
+
return _executeWithTimeout.apply(this, arguments);
|
|
16
|
+
}
|
|
17
|
+
function _executeWithTimeout() {
|
|
18
|
+
_executeWithTimeout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(fn) {
|
|
19
|
+
var timeoutMs,
|
|
20
|
+
timerId,
|
|
21
|
+
timeoutPromise,
|
|
22
|
+
result,
|
|
23
|
+
isTimeout,
|
|
24
|
+
_args = arguments;
|
|
25
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
26
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27
|
+
case 0:
|
|
28
|
+
timeoutMs = _args.length > 1 && _args[1] !== undefined ? _args[1] : BEFORE_CONFIRM_TIMEOUT_MS;
|
|
29
|
+
timeoutPromise = new Promise(function (_, reject) {
|
|
30
|
+
timerId = setTimeout(function () {
|
|
31
|
+
return reject(new Error('timed out'));
|
|
32
|
+
}, timeoutMs);
|
|
33
|
+
});
|
|
34
|
+
_context.prev = 2;
|
|
35
|
+
_context.next = 5;
|
|
36
|
+
return Promise.race([fn(), timeoutPromise]);
|
|
37
|
+
case 5:
|
|
38
|
+
result = _context.sent;
|
|
39
|
+
return _context.abrupt("return", {
|
|
40
|
+
result: result,
|
|
41
|
+
timedOut: false
|
|
42
|
+
});
|
|
43
|
+
case 9:
|
|
44
|
+
_context.prev = 9;
|
|
45
|
+
_context.t0 = _context["catch"](2);
|
|
46
|
+
isTimeout = _context.t0 instanceof Error && _context.t0.message === 'timed out';
|
|
47
|
+
if (!isTimeout) {
|
|
48
|
+
_context.next = 14;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
return _context.abrupt("return", {
|
|
52
|
+
result: undefined,
|
|
53
|
+
timedOut: true
|
|
54
|
+
});
|
|
55
|
+
case 14:
|
|
56
|
+
throw _context.t0;
|
|
57
|
+
case 15:
|
|
58
|
+
_context.prev = 15;
|
|
59
|
+
clearTimeout(timerId);
|
|
60
|
+
return _context.finish(15);
|
|
61
|
+
case 18:
|
|
62
|
+
case "end":
|
|
63
|
+
return _context.stop();
|
|
64
|
+
}
|
|
65
|
+
}, _callee, null, [[2, 9, 15, 18]]);
|
|
66
|
+
}));
|
|
67
|
+
return _executeWithTimeout.apply(this, arguments);
|
|
68
|
+
}
|