@alipay/ams-checkout 0.0.1784542444-dev.2 → 0.0.1784542444-dev.4
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/dist/ams-checkout.min.js.map +1 -1
- package/esm/config/index.js +1 -1
- package/esm/core/component/element/modernElementController/index.js +108 -38
- package/esm/modern/tools.js +1 -1
- package/esm/plugin/component/channel.d.ts +1 -1
- package/esm/plugin/component/channel.js +11 -2
- package/esm/util/logger.js +1 -1
- package/package.json +1 -1
- package/types.d.ts +30 -1
- package/types.untrimmed.d.ts +30 -1
package/esm/config/index.js
CHANGED
|
@@ -30,7 +30,7 @@ export var v2AppMarmotMap = {
|
|
|
30
30
|
light_sandbox: 'https://checkout.antom.com',
|
|
31
31
|
prod: 'https://checkout.antom.com'
|
|
32
32
|
};
|
|
33
|
-
export var sdkVersion = "0.0.1784542444-dev.
|
|
33
|
+
export var sdkVersion = "0.0.1784542444-dev.4";
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* @description: 目前应用层分为v1和v2,会存在两个应用版本号不是同步发布的情况。所以需要把默认的应用版本号配置抽离出来。
|
|
@@ -29,10 +29,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
29
29
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
30
30
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
31
31
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
32
|
-
import { openModal, sdkQuery, getLocaleFromRenderData, getDevReqConfig, getMetaData, buildPageUrl, debugError, debug, MessageType, request, parseHostSign, SDKBridge, parseTrackerId, oneAccountQuery, OpenSDKError, awaitWrap, themeColorMap, ApplePayHostService, checkSessionData, sdkTracker } from "../../../../modern/tools";
|
|
32
|
+
import { openModal, showToast, sdkQuery, getLocaleFromRenderData, getDevReqConfig, getMetaData, buildPageUrl, debugError, debug, MessageType, request, parseHostSign, SDKBridge, parseTrackerId, oneAccountQuery, OpenSDKError, awaitWrap, themeColorMap, ApplePayHostService, buildRecurringPaymentRequest, checkSessionData, sdkTracker } from "../../../../modern/tools";
|
|
33
33
|
import { device } from "../../../../util";
|
|
34
34
|
import { EventCallbackCode } from "../type";
|
|
35
35
|
import { adaptSubmitResult, adaptAppearance } from "./adapter";
|
|
36
|
+
import { safeParse } from "../util";
|
|
36
37
|
import { v4 as uuid } from 'uuid';
|
|
37
38
|
|
|
38
39
|
// ============================================================
|
|
@@ -43,18 +44,45 @@ import { v4 as uuid } from 'uuid';
|
|
|
43
44
|
// ============================================================
|
|
44
45
|
|
|
45
46
|
var TRACK_CODE_PREFIX = '7982';
|
|
47
|
+
|
|
48
|
+
// 缓存解析出的 merchantId,供埋点 helper 在任意阶段统一带上
|
|
49
|
+
var _merchantId = '';
|
|
46
50
|
var track = function track(phase, msg) {
|
|
47
51
|
var extra = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
48
52
|
try {
|
|
49
53
|
var code = "".concat(TRACK_CODE_PREFIX).concat(phase === 'error' ? '' : phase);
|
|
54
|
+
// LogItem 类型未暴露 merchant_id 字段,但运行时 tracker 会透传,
|
|
55
|
+
// 故用断言保留该字段名供下游埋点消费
|
|
50
56
|
sdkTracker.log(_objectSpread({
|
|
51
57
|
code: code,
|
|
52
|
-
msg: msg
|
|
58
|
+
msg: msg,
|
|
59
|
+
merchant_id: _merchantId
|
|
53
60
|
}, extra));
|
|
54
61
|
} catch (_unused) {
|
|
55
62
|
/* 埋点失败绝不影响主流程 */
|
|
56
63
|
}
|
|
57
64
|
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* 优先取 sessionData 解析出的 clientId;
|
|
68
|
+
* 缺失时从容错角度回落到 extendInfo 中的 merchantId(URL 编码需解码)。
|
|
69
|
+
* 全程容错:任一步骤缺失/解析失败都返回空串,绝不抛异常。
|
|
70
|
+
*/
|
|
71
|
+
var resolveMerchantId = function resolveMerchantId(parseData) {
|
|
72
|
+
if (parseData !== null && parseData !== void 0 && parseData.clientId) {
|
|
73
|
+
return parseData.clientId;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
var info = safeParse(parseData === null || parseData === void 0 ? void 0 : parseData.extendInfo, {});
|
|
77
|
+
var merchantId = info === null || info === void 0 ? void 0 : info.merchantId;
|
|
78
|
+
if (!merchantId || typeof merchantId !== 'string') {
|
|
79
|
+
return '';
|
|
80
|
+
}
|
|
81
|
+
return decodeURIComponent(merchantId);
|
|
82
|
+
} catch (_unused2) {
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
};
|
|
58
86
|
var trackMount = function trackMount(msg) {
|
|
59
87
|
var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
60
88
|
return track('mount', msg, extra);
|
|
@@ -88,6 +116,9 @@ var recoverSdkQueryBusinessResponse = function recoverSdkQueryBusinessResponse(e
|
|
|
88
116
|
var MOUNT_TIMEOUT = 16000;
|
|
89
117
|
var logger = new Logger(LogConfig, true);
|
|
90
118
|
var ELEMENT_DESTROYED_MESSAGE = 'Element already destroyed';
|
|
119
|
+
// 订阅/分期场景 ApplePaySession 版本:recurringPaymentRequest 需 v12+。
|
|
120
|
+
// 对齐老链路 plugin/applepay/interface.ts 的 APPLE_PAY_RECURRING_VERSION = 14。
|
|
121
|
+
var APPLE_PAY_RECURRING_VERSION = 14;
|
|
91
122
|
var getDestroyedError = function getDestroyedError() {
|
|
92
123
|
return {
|
|
93
124
|
code: ERRORMESSAGE.UI_STATE_ERROR.code,
|
|
@@ -142,6 +173,7 @@ var HostSDKBridge = /*#__PURE__*/function (_SDKBridge) {
|
|
|
142
173
|
var AMSMessageType = {
|
|
143
174
|
VALIDATE: 'OPENSDK@VALIDATE',
|
|
144
175
|
VALIDATE_REPLY: 'OPENSDK@VALIDATE_REPLY',
|
|
176
|
+
SHOWTOAST: 'OPENSDK@SHOWTOAST',
|
|
145
177
|
GET_APPLE_PAY_TOKEN: 'OPENSDK@GET_APPLE_PAY_TOKEN',
|
|
146
178
|
GET_APPLE_PAY_TOKEN_REPLY: 'OPENSDK@GET_APPLE_PAY_TOKEN_REPLY',
|
|
147
179
|
// Web element GP:iframe 委托 SDK/父 frame 调 loadPaymentData(解决跨域 iframe 二次 show() 被拒问题)
|
|
@@ -269,7 +301,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
269
301
|
if (iframeOrigin && iframeOrigin !== 'null') {
|
|
270
302
|
this.bridge.setOrigin(iframeOrigin);
|
|
271
303
|
}
|
|
272
|
-
} catch (
|
|
304
|
+
} catch (_unused3) {
|
|
273
305
|
// URL 解析失败时保持默认 origin
|
|
274
306
|
}
|
|
275
307
|
} else {
|
|
@@ -385,7 +417,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
385
417
|
_this = this,
|
|
386
418
|
_parseData$paymentMet,
|
|
387
419
|
_sdkQueryResult$data;
|
|
388
|
-
var sessionData, parseData, isConnect, paymentSessionConfig, genSdkQueryPromise, genOneAccountQueryPromise, promises, cancelDestroyCallback, destroyPromise, queryPromise, _yield$Promise$race$f, _yield$Promise$race$f2, sdkQueryResult, oneAccountQueryResult, _sdkQueryResult$error, _sdkQueryResult$error2, _oneAccountQueryResul, _oneAccountQueryResul2, preferredLocale, locale, renderDataError;
|
|
420
|
+
var sessionData, parseData, lastEnv, isConnect, paymentSessionConfig, genSdkQueryPromise, genOneAccountQueryPromise, promises, cancelDestroyCallback, destroyPromise, queryPromise, _yield$Promise$race$f, _yield$Promise$race$f2, sdkQueryResult, oneAccountQueryResult, _sdkQueryResult$error, _sdkQueryResult$error2, _oneAccountQueryResul, _oneAccountQueryResul2, preferredLocale, locale, renderDataError;
|
|
389
421
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
390
422
|
while (1) switch (_context2.prev = _context2.next) {
|
|
391
423
|
case 0:
|
|
@@ -395,15 +427,23 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
395
427
|
this.notRedirectAfterComplete = renderOptions.notRedirectAfterComplete || false;
|
|
396
428
|
sessionData = this.options.sessionData; // checkSessionData 失败会 throw AntomSDKError(SESSION_DATA_INVALID),
|
|
397
429
|
// 冒泡到 mount 的 catch 由 mount_error 统一上报,此处无需额外处理
|
|
398
|
-
parseData = checkSessionData(sessionData, 'ELEMENT_PAYMENT');
|
|
430
|
+
parseData = checkSessionData(sessionData, 'ELEMENT_PAYMENT');
|
|
431
|
+
lastEnv = this.options.environment === 'sandbox' ? 'sandbox' : 'prod';
|
|
432
|
+
this.options.environment;
|
|
433
|
+
// 解析 merchantId(优先 clientId,缺失时容错回落到 extendInfo.merchantId),
|
|
434
|
+
// 缓存到模块级变量,使后续所有 trackXxx 埋点统一带上
|
|
435
|
+
_merchantId = resolveMerchantId(parseData);
|
|
436
|
+
|
|
437
|
+
// 初始化 request 全局配置,使 sdkQuery 能正确发起请求
|
|
399
438
|
// tracker: sdkTracker —— 接入 HTTP 层自动埋点(B 套),上报每个请求的成败/RTT/错误码
|
|
400
439
|
// 与 antom.ts 入口对齐;不传则 sdkQuery/submitPay/inquiry 等网络细节不可观测
|
|
401
|
-
request.setGlobalOptions({
|
|
440
|
+
request.setGlobalOptions(_objectSpread(_objectSpread({
|
|
402
441
|
hostSign: parseHostSign(sessionData),
|
|
403
|
-
env:
|
|
404
|
-
|
|
442
|
+
env: lastEnv
|
|
443
|
+
}, getDevReqConfig()), {}, {
|
|
444
|
+
sdkVersion: "0.0.1784542444-dev.4" || '',
|
|
405
445
|
tracker: sdkTracker
|
|
406
|
-
});
|
|
446
|
+
}));
|
|
407
447
|
isConnect = !!(parseData !== null && parseData !== void 0 && (_parseData$connectFac = parseData.connectFactor) !== null && _parseData$connectFac !== void 0 && _parseData$connectFac.enableConnect);
|
|
408
448
|
paymentSessionConfig = parseData === null || parseData === void 0 ? void 0 : parseData.paymentSessionConfig;
|
|
409
449
|
genSdkQueryPromise = function genSdkQueryPromise() {
|
|
@@ -441,9 +481,9 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
441
481
|
});
|
|
442
482
|
});
|
|
443
483
|
queryPromise = Promise.all(promises);
|
|
444
|
-
_context2.next =
|
|
484
|
+
_context2.next = 19;
|
|
445
485
|
return Promise.race([queryPromise, destroyPromise]).finally(cancelDestroyCallback);
|
|
446
|
-
case
|
|
486
|
+
case 19:
|
|
447
487
|
_yield$Promise$race$f = _context2.sent;
|
|
448
488
|
_yield$Promise$race$f2 = _slicedToArray(_yield$Promise$race$f, 2);
|
|
449
489
|
sdkQueryResult = _yield$Promise$race$f2[0];
|
|
@@ -482,6 +522,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
482
522
|
sessionMetaData: parseData,
|
|
483
523
|
// 更新字段,对应老的doMain
|
|
484
524
|
merchantDomain: window.location.hostname,
|
|
525
|
+
doMain: window.location.hostname,
|
|
485
526
|
// 更新字段,对应老的appearance,结构按新的来
|
|
486
527
|
appearance: adaptAppearance((renderOptions === null || renderOptions === void 0 ? void 0 : renderOptions.appearance) || this.options.appearance, renderOptions.merchantAppointParam),
|
|
487
528
|
// 原老字段
|
|
@@ -489,7 +530,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
489
530
|
paymentMethodCategoryType: paymentSessionConfig === null || paymentSessionConfig === void 0 ? void 0 : paymentSessionConfig.paymentMethodCategoryType,
|
|
490
531
|
productSceneVersion: paymentSessionConfig === null || paymentSessionConfig === void 0 ? void 0 : paymentSessionConfig.productSceneVersion,
|
|
491
532
|
trackId: parseTrackerId(sessionData),
|
|
492
|
-
merchantId:
|
|
533
|
+
merchantId: _merchantId,
|
|
493
534
|
paymentMethodType: parseData === null || parseData === void 0 || (_parseData$paymentMet = parseData.paymentMethodInfoView) === null || _parseData$paymentMet === void 0 ? void 0 : _parseData$paymentMet.paymentMethodType
|
|
494
535
|
},
|
|
495
536
|
// 原老字段
|
|
@@ -497,17 +538,17 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
497
538
|
// 新sdk字段
|
|
498
539
|
locale: locale,
|
|
499
540
|
// 新sdk字段
|
|
500
|
-
sdkVersion: "0.0.1784542444-dev.
|
|
541
|
+
sdkVersion: "0.0.1784542444-dev.4" || '',
|
|
501
542
|
// 新sdk字段
|
|
502
543
|
merchantId: (sdkQueryResult === null || sdkQueryResult === void 0 || (_sdkQueryResult$data = sdkQueryResult.data) === null || _sdkQueryResult$data === void 0 ? void 0 : _sdkQueryResult$data.merchantId) || '',
|
|
503
544
|
// 新sdk字段
|
|
504
|
-
env:
|
|
545
|
+
env: lastEnv,
|
|
505
546
|
// 新sdk字段,开发环境调试使用
|
|
506
547
|
_requestConfig: _objectSpread({
|
|
507
|
-
env:
|
|
548
|
+
env: lastEnv
|
|
508
549
|
}, getDevReqConfig())
|
|
509
550
|
});
|
|
510
|
-
case
|
|
551
|
+
case 29:
|
|
511
552
|
case "end":
|
|
512
553
|
return _context2.stop();
|
|
513
554
|
}
|
|
@@ -614,11 +655,18 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
614
655
|
this.bridge.on(MessageType.HEIGHT_UPDATE, function (height) {
|
|
615
656
|
if (_this2.iframe) _this2.iframe.style.height = "".concat(height, "px");
|
|
616
657
|
});
|
|
617
|
-
this.bridge.on(
|
|
658
|
+
this.bridge.on(AMSMessageType.SHOWTOAST, function (payload, _ports, meta) {
|
|
618
659
|
var _this2$iframe, _this2$modalIframe;
|
|
619
660
|
if (meta && meta.source !== ((_this2$iframe = _this2.iframe) === null || _this2$iframe === void 0 ? void 0 : _this2$iframe.contentWindow) && meta.source !== ((_this2$modalIframe = _this2.modalIframe) === null || _this2$modalIframe === void 0 ? void 0 : _this2$modalIframe.contentWindow)) {
|
|
620
661
|
return;
|
|
621
662
|
}
|
|
663
|
+
showToast(payload);
|
|
664
|
+
});
|
|
665
|
+
this.bridge.on(MessageType.REDIRECT, function (payload, _ports, meta) {
|
|
666
|
+
var _this2$iframe2, _this2$modalIframe2;
|
|
667
|
+
if (meta && meta.source !== ((_this2$iframe2 = _this2.iframe) === null || _this2$iframe2 === void 0 ? void 0 : _this2$iframe2.contentWindow) && meta.source !== ((_this2$modalIframe2 = _this2.modalIframe) === null || _this2$modalIframe2 === void 0 ? void 0 : _this2$modalIframe2.contentWindow)) {
|
|
668
|
+
return;
|
|
669
|
+
}
|
|
622
670
|
var url = payload.url,
|
|
623
671
|
mode = payload.mode,
|
|
624
672
|
appLinkUrl = payload.appLinkUrl,
|
|
@@ -672,8 +720,8 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
672
720
|
}
|
|
673
721
|
});
|
|
674
722
|
this.bridge.on(MessageType.OPEN_MODAL, function (payload, _ports, meta) {
|
|
675
|
-
var _this2$
|
|
676
|
-
if (meta && meta.source !== ((_this2$
|
|
723
|
+
var _this2$iframe3;
|
|
724
|
+
if (meta && meta.source !== ((_this2$iframe3 = _this2.iframe) === null || _this2$iframe3 === void 0 ? void 0 : _this2$iframe3.contentWindow)) {
|
|
677
725
|
return;
|
|
678
726
|
}
|
|
679
727
|
_this2.handleOpenModal(payload);
|
|
@@ -682,8 +730,8 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
682
730
|
});
|
|
683
731
|
});
|
|
684
732
|
this.bridge.on(MessageType.DESTROY_ELEMENT, function (_payload, _ports, meta) {
|
|
685
|
-
var _this2$
|
|
686
|
-
if (meta && meta.source !== ((_this2$
|
|
733
|
+
var _this2$iframe4;
|
|
734
|
+
if (meta && meta.source !== ((_this2$iframe4 = _this2.iframe) === null || _this2$iframe4 === void 0 ? void 0 : _this2$iframe4.contentWindow)) {
|
|
687
735
|
return;
|
|
688
736
|
}
|
|
689
737
|
_this2.destroy();
|
|
@@ -714,7 +762,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
714
762
|
var _handleGetApplePayToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(payload, onBeforeConfirm) {
|
|
715
763
|
var _paymentMethod,
|
|
716
764
|
_this3 = this;
|
|
717
|
-
var sessionData, applePayProps, paymentRequest, merchantCapabilities, merchantInfo, paymentAmount, supportedNetworks, version, requiredBillingContactFields, requiredShippingContactFields, finalAmount, finalCurrency, capturedResult, service, _capturedResult, errCode;
|
|
765
|
+
var sessionData, applePayProps, paymentRequest, merchantCapabilities, merchantInfo, paymentAmount, supportedNetworks, version, requiredBillingContactFields, requiredShippingContactFields, finalAmount, finalCurrency, capturedResult, recurringRequest, service, _capturedResult, errCode;
|
|
718
766
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
719
767
|
while (1) switch (_context5.prev = _context5.next) {
|
|
720
768
|
case 0:
|
|
@@ -748,21 +796,35 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
748
796
|
if (this._merchantCurrency) {
|
|
749
797
|
finalCurrency = this._merchantCurrency;
|
|
750
798
|
}
|
|
799
|
+
// 订阅场景:从 sessionData 提取 recurringInfo 构造 recurringPaymentRequest。
|
|
800
|
+
// 对齐老 ApplePaySdk 链路(parseData.paymentSessionFactor.recurringInfo)与
|
|
801
|
+
// Express 链路(applePayHostToken.ts),否则 Chrome 非 Safari 会降级为普通支付弹窗。
|
|
802
|
+
recurringRequest = buildRecurringPaymentRequest(sessionData, merchantInfo, {
|
|
803
|
+
value: finalAmount,
|
|
804
|
+
currency: finalCurrency
|
|
805
|
+
});
|
|
751
806
|
service = new ApplePayHostService({
|
|
752
|
-
paymentRequest: {
|
|
807
|
+
paymentRequest: _objectSpread({
|
|
753
808
|
countryCode: merchantInfo === null || merchantInfo === void 0 ? void 0 : merchantInfo.countryCode,
|
|
754
809
|
currencyCode: finalCurrency,
|
|
755
810
|
merchantCapabilities: merchantCapabilities,
|
|
756
811
|
supportedNetworks: supportedNetworks,
|
|
757
812
|
requiredBillingContactFields: requiredBillingContactFields,
|
|
758
813
|
requiredShippingContactFields: requiredShippingContactFields,
|
|
759
|
-
total: {
|
|
814
|
+
total: recurringRequest ? {
|
|
815
|
+
type: 'final',
|
|
816
|
+
label: recurringRequest.regularBilling.label,
|
|
817
|
+
amount: finalAmount
|
|
818
|
+
} : {
|
|
760
819
|
type: 'final',
|
|
761
820
|
label: (merchantInfo === null || merchantInfo === void 0 ? void 0 : merchantInfo.merchantName) || 'Payment',
|
|
762
821
|
amount: finalAmount
|
|
763
822
|
},
|
|
764
|
-
version: version
|
|
765
|
-
},
|
|
823
|
+
version: recurringRequest ? APPLE_PAY_RECURRING_VERSION : version
|
|
824
|
+
}, recurringRequest ? {
|
|
825
|
+
lineItems: [recurringRequest.regularBilling],
|
|
826
|
+
recurringPaymentRequest: recurringRequest
|
|
827
|
+
} : {}),
|
|
766
828
|
enableModalCloseListener: true,
|
|
767
829
|
callbacks: {
|
|
768
830
|
validateMerchant: function () {
|
|
@@ -886,10 +948,10 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
886
948
|
}()
|
|
887
949
|
}
|
|
888
950
|
});
|
|
889
|
-
_context5.prev =
|
|
890
|
-
_context5.next =
|
|
951
|
+
_context5.prev = 15;
|
|
952
|
+
_context5.next = 18;
|
|
891
953
|
return service.startPay();
|
|
892
|
-
case
|
|
954
|
+
case 18:
|
|
893
955
|
trackElement('applepay_token_success', {
|
|
894
956
|
d1: (_capturedResult = capturedResult) !== null && _capturedResult !== void 0 && _capturedResult.token ? 'has_token' : 'no_token'
|
|
895
957
|
});
|
|
@@ -897,11 +959,11 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
897
959
|
success: true,
|
|
898
960
|
result: capturedResult
|
|
899
961
|
});
|
|
900
|
-
_context5.next =
|
|
962
|
+
_context5.next = 26;
|
|
901
963
|
break;
|
|
902
|
-
case
|
|
903
|
-
_context5.prev =
|
|
904
|
-
_context5.t0 = _context5["catch"](
|
|
964
|
+
case 22:
|
|
965
|
+
_context5.prev = 22;
|
|
966
|
+
_context5.t0 = _context5["catch"](15);
|
|
905
967
|
// 商户验证失败已在 validateMerchant 内单独埋点(applepay_merchant_validate_failed),此处跳过避免重复
|
|
906
968
|
if ((_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.errorCode) !== 'APPLE_PAY_PAYMENT_SESSION_REQUEST_FAILED') {
|
|
907
969
|
errCode = (_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.errorCode) || 'APPLE_PAY_NOT_SUPPORTED'; // 用户主动取消单独标记,便于区分取消与真实失败
|
|
@@ -922,11 +984,11 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
922
984
|
errorCode: (_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.errorCode) || 'APPLE_PAY_NOT_SUPPORTED'
|
|
923
985
|
}
|
|
924
986
|
});
|
|
925
|
-
case
|
|
987
|
+
case 26:
|
|
926
988
|
case "end":
|
|
927
989
|
return _context5.stop();
|
|
928
990
|
}
|
|
929
|
-
}, _callee5, this, [[
|
|
991
|
+
}, _callee5, this, [[15, 22]]);
|
|
930
992
|
}));
|
|
931
993
|
function handleGetApplePayToken(_x4, _x5) {
|
|
932
994
|
return _handleGetApplePayToken.apply(this, arguments);
|
|
@@ -1036,7 +1098,15 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
1036
1098
|
var script = document.createElement('script');
|
|
1037
1099
|
script.src = 'https://pay.google.com/gp/p/js/pay.js';
|
|
1038
1100
|
script.async = true;
|
|
1039
|
-
|
|
1101
|
+
|
|
1102
|
+
// 当判断条件成立时,代表 document.body.appendChild 方法已被劫持
|
|
1103
|
+
if (document.body.appendChild !== Node.prototype.appendChild) {
|
|
1104
|
+
// 使用原生 appendChild 避免微前端沙箱(如 qiankun)将动态 <script> 劫持为 fetch 加载,
|
|
1105
|
+
// 导致不支持 CORS 的第三方脚本(如 pay.google.com)加载失败
|
|
1106
|
+
Node.prototype.appendChild.call(document.body, script);
|
|
1107
|
+
} else {
|
|
1108
|
+
document.body.appendChild(script);
|
|
1109
|
+
}
|
|
1040
1110
|
script.onload = function () {
|
|
1041
1111
|
loadAndPay();
|
|
1042
1112
|
};
|
|
@@ -1436,7 +1506,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
1436
1506
|
cleanups.forEach(function (fn) {
|
|
1437
1507
|
try {
|
|
1438
1508
|
fn();
|
|
1439
|
-
} catch (
|
|
1509
|
+
} catch (_unused5) {
|
|
1440
1510
|
/* ignore cleanup error */
|
|
1441
1511
|
}
|
|
1442
1512
|
});
|
|
@@ -1714,7 +1784,7 @@ export var ModernElementController = /*#__PURE__*/function () {
|
|
|
1714
1784
|
if (iframeOrigin && iframeOrigin !== 'null') {
|
|
1715
1785
|
modalBridge.setOrigin(iframeOrigin);
|
|
1716
1786
|
}
|
|
1717
|
-
} catch (
|
|
1787
|
+
} catch (_unused6) {
|
|
1718
1788
|
// URL 解析失败时保持默认 origin
|
|
1719
1789
|
}
|
|
1720
1790
|
// 如果 payload 有 appearance,通过 TRANSFER_MODAL_APPEARANCE 消息发送给 modal
|