@alipay/ams-checkout 2.0.28 → 2.0.29

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.
@@ -1,12 +1,16 @@
1
1
  var _excluded = ["onStatusChange"],
2
2
  _excluded2 = ["onBeforeConfirm"];
3
- 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); }
4
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
5
4
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
8
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
9
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
11
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
12
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
+ 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); }
10
14
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
11
15
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
16
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -33,25 +37,27 @@ import { ERRORMESSAGE, PROMISE_CALLBACK_CODE } from "../../../../constant";
33
37
  import { BusManager, BusMessage } from "../../../bus";
34
38
  import { ApplePayActionEnum } from "../../../bus/interface";
35
39
  import { shouldQueryOneAccount } from "../../../utils/connectConfig";
36
- import { ApplePayHostService, awaitWrap, buildPageUrl, buildRecurringPaymentRequest, checkSessionData, debug, debugError, getDevReqConfig, getLocaleFromRenderData, getModalMessageTrackData, getMetaData, installModalMessageMonitor, MessageType, ModalPort, oneAccountQuery, openModal, OpenSDKError, parseHostSign, parseTrackerId, request, SDKBridge, sdkQuery, sdkTracker, showToast, themeColorMap } from "../../../../modern/tools";
40
+ import { ApplePayHostService, awaitWrap, buildPageUrl, buildRecurringPaymentRequest, checkSessionData, debug, debugError, getDevReqConfig, getLocaleFromRenderData, getMetaData, getModalMessageTrackData, installModalMessageMonitor, MessageType, ModalPort, oneAccountQuery, openModal, OpenSDKError, parseHostSign, parseTrackerId, request, SDKBridge, sdkQuery, sdkTracker, showToast, themeColorMap } from "../../../../modern/tools";
37
41
  import { getApplePayPaymentSession } from "../../../../service";
38
42
  import { device } from "../../../../util";
39
43
  import { BEFORE_CONFIRM_TIMEOUT_MS, executeWithTimeout, MERCHANT_CONFIRM_ABORT_CODE, MERCHANT_CONFIRM_TIMEOUT_CODE } from "../../../../util/beforeConfirm";
40
44
  import CallApp from "../../../../util/intl-callapp/es/main";
41
45
  import { LogConfig, Logger } from "../../../../util/logger";
46
+ import { getIdengineTimezone } from "../../../../util/timezone";
42
47
  import { v4 as uuid } from 'uuid';
43
48
  import { EventCallbackCode } from "../type";
44
49
  import { safeParse } from "../util";
45
50
  import { adaptAppearance, adaptSubmitResult } from "./adapter";
46
51
 
47
52
  // ============================================================
48
- // 埋点 helper(不改 opensdk 源码,复用 sdkTracker 单例,trackId 已自动注入)
49
- // code 规约:7982 + 阶段后缀,与 opensdk internalTracker 对齐
50
- // 7982mount / 7982handshake / 7982element / 7982(异常无后缀)
51
- // 只插入调用,不影响任何运行逻辑
53
+ // Tracking helpers reuse the OpenSDK tracker singleton without changing OpenSDK code.
54
+ // Tracking code uses the 7882 prefix plus a phase suffix:
55
+ // 7882mount, 7882handshake, 7882element, and 7882 for errors.
56
+ // These calls are diagnostic only and do not change the business flow.
52
57
  // ============================================================
53
58
 
54
- var TRACK_CODE_PREFIX = '7982';
59
+ var TRACK_CODE_PREFIX = '7882';
60
+ var MODERN_CONTROLLER_ELEMENT_TYPE = 'payment_v1';
55
61
 
56
62
  /**
57
63
  * 优先取 sessionData 解析出的 clientId;
@@ -75,14 +81,17 @@ var resolveMerchantId = function resolveMerchantId(parseData) {
75
81
  };
76
82
  // reportApiEnd 留为模块级,merchant_id 改为显式参数(由 runApi 从实例传入),
77
83
  // 避免原模块级 _merchantId 的多实例共享竞争。track/trackXxx 已改为实例方法读 this.merchantId。
78
- var reportApiEnd = function reportApiEnd(api, durationMs, merchantId) {
79
- var extra = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
84
+ var reportApiEnd = function reportApiEnd(api, durationMs, merchantId, productScene) {
85
+ var extra = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
80
86
  try {
81
87
  sdkTracker.log(_objectSpread({
82
88
  code: "".concat(TRACK_CODE_PREFIX, "api"),
83
89
  msg: api,
84
90
  m1: durationMs,
85
- merchant_id: merchantId
91
+ merchant_id: merchantId,
92
+ product_scene: productScene,
93
+ element_type: MODERN_CONTROLLER_ELEMENT_TYPE,
94
+ idengine_timezone: getIdengineTimezone()
86
95
  }, extra));
87
96
  } catch (_unused2) {
88
97
  /* 埋点失败绝不影响主流程 */
@@ -140,7 +149,7 @@ var normalizeApiInput = function normalizeApiInput(api, params) {
140
149
  // 统一包裹:捕获终态(resolve/reject)后上报,原值/原异常原样透传,不影响任何已有逻辑。
141
150
  // extraBuilder 供调用方注入实例上下文字段(如 paymentMethodType),其值覆盖 normalizeApiResult 结果。
142
151
  var runApi = /*#__PURE__*/function () {
143
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(api, fn, extraBuilder, inputExtra, merchantId) {
152
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(api, fn, extraBuilder, inputExtra, merchantId, productScene) {
144
153
  var startedAt, result;
145
154
  return _regeneratorRuntime().wrap(function _callee$(_context) {
146
155
  while (1) switch (_context.prev = _context.next) {
@@ -151,12 +160,12 @@ var runApi = /*#__PURE__*/function () {
151
160
  return fn();
152
161
  case 4:
153
162
  result = _context.sent;
154
- reportApiEnd(api, Date.now() - startedAt, merchantId, _objectSpread(_objectSpread(_objectSpread({}, inputExtra), normalizeApiResult(api, result)), extraBuilder === null || extraBuilder === void 0 ? void 0 : extraBuilder(false)));
163
+ reportApiEnd(api, Date.now() - startedAt, merchantId, productScene, _objectSpread(_objectSpread(_objectSpread({}, inputExtra), normalizeApiResult(api, result)), extraBuilder === null || extraBuilder === void 0 ? void 0 : extraBuilder(false)));
155
164
  return _context.abrupt("return", result);
156
165
  case 9:
157
166
  _context.prev = 9;
158
167
  _context.t0 = _context["catch"](1);
159
- reportApiEnd(api, Date.now() - startedAt, merchantId, _objectSpread(_objectSpread({}, inputExtra), {}, {
168
+ reportApiEnd(api, Date.now() - startedAt, merchantId, productScene, _objectSpread(_objectSpread({}, inputExtra), {}, {
160
169
  d1: 'error',
161
170
  d2: (_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.code) || 'UNKNOWN'
162
171
  }, extraBuilder === null || extraBuilder === void 0 ? void 0 : extraBuilder(true)));
@@ -167,7 +176,7 @@ var runApi = /*#__PURE__*/function () {
167
176
  }
168
177
  }, _callee, null, [[1, 9]]);
169
178
  }));
170
- return function runApi(_x, _x2, _x3, _x4, _x5) {
179
+ return function runApi(_x, _x2, _x3, _x4, _x5, _x6) {
171
180
  return _ref.apply(this, arguments);
172
181
  };
173
182
  }();
@@ -296,13 +305,15 @@ export var ModernElementController = /*#__PURE__*/function () {
296
305
  _defineProperty(this, "currentPaymentMethodType", '');
297
306
  /** Removes the passive host-window modal monitor for this controller. */
298
307
  _defineProperty(this, "stopModalMessageMonitor", void 0);
299
- /** 提交进行中标志:submitPayment 执行期间为 true,用于拒绝并发重入,避免旧闭包串扰/重复拉起钱包 */
308
+ /** True while submitPayment is running; prevents concurrent re-entry and duplicate wallet launches. */
300
309
  _defineProperty(this, "isSubmitting", false);
301
310
  /**
302
311
  * 当前实例解析出的 merchantId,供 trackXxx / reportApiEnd 统一带上。
303
312
  * 实例隔离:多实例并发 mount 时各自持有,避免原模块级 _merchantId 的共享竞争。
304
313
  */
305
314
  _defineProperty(this, "merchantId", '');
315
+ /** session 中的真实业务场景,仅作为埋点公共维度,不参与业务判断。 */
316
+ _defineProperty(this, "productScene", '');
306
317
  this.options = options;
307
318
  this.onStatusChange = onStatusChange;
308
319
  if (options.sessionData) {
@@ -341,7 +352,10 @@ export var ModernElementController = /*#__PURE__*/function () {
341
352
  sdkTracker.log(_objectSpread({
342
353
  code: code,
343
354
  msg: msg,
344
- merchant_id: this.merchantId
355
+ merchant_id: this.merchantId,
356
+ product_scene: this.productScene,
357
+ element_type: MODERN_CONTROLLER_ELEMENT_TYPE,
358
+ idengine_timezone: getIdengineTimezone()
345
359
  }, extra));
346
360
  } catch (_unused3) {
347
361
  /* 埋点失败绝不影响主流程 */
@@ -371,11 +385,44 @@ export var ModernElementController = /*#__PURE__*/function () {
371
385
  var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
372
386
  this.track('error', msg, extra);
373
387
  }
388
+ }, {
389
+ key: "createRequestTracker",
390
+ value: function createRequestTracker() {
391
+ var _this2 = this;
392
+ try {
393
+ var requestTracker = Object.create(sdkTracker);
394
+ requestTracker.log = function () {
395
+ try {
396
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
397
+ args[_key2] = arguments[_key2];
398
+ }
399
+ var event = args[0],
400
+ rest = args.slice(1);
401
+ if (event && _typeof(event) === 'object') {
402
+ sdkTracker.log.apply(sdkTracker, [_objectSpread(_objectSpread({}, event), {}, {
403
+ merchant_id: _this2.merchantId,
404
+ product_scene: _this2.productScene,
405
+ element_type: MODERN_CONTROLLER_ELEMENT_TYPE,
406
+ idengine_timezone: getIdengineTimezone()
407
+ })].concat(_toConsumableArray(rest)));
408
+ return;
409
+ }
410
+ sdkTracker.log.apply(sdkTracker, args);
411
+ } catch (_unused4) {
412
+ /* 埋点失败绝不影响请求 */
413
+ }
414
+ };
415
+ return requestTracker;
416
+ } catch (_unused5) {
417
+ return sdkTracker;
418
+ }
419
+ }
374
420
  }, {
375
421
  key: "mount",
376
422
  value: function () {
377
423
  var _mount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(renderOptions, sdkSelector) {
378
- var _this2 = this;
424
+ var _this3 = this;
425
+ var _metaData$paymentSess, metaData;
379
426
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
380
427
  while (1) switch (_context2.prev = _context2.next) {
381
428
  case 0:
@@ -384,23 +431,25 @@ export var ModernElementController = /*#__PURE__*/function () {
384
431
  // 缺失/无效时会 throw,这里容错吞掉——失败的校验仍由后续 setup() 内的 checkSessionData
385
432
  // 抛出、走 mount_error 统一上报,不改变错误时序。
386
433
  try {
387
- this.merchantId = resolveMerchantId(checkSessionData(this.options.sessionData, 'ELEMENT_PAYMENT'));
388
- } catch (_unused4) {
434
+ metaData = checkSessionData(this.options.sessionData, 'ELEMENT_PAYMENT');
435
+ this.merchantId = resolveMerchantId(metaData);
436
+ this.productScene = (metaData === null || metaData === void 0 || (_metaData$paymentSess = metaData.paymentSessionConfig) === null || _metaData$paymentSess === void 0 ? void 0 : _metaData$paymentSess.productScene) || '';
437
+ } catch (_unused6) {
389
438
  /* setup 校验异常会统一上报 */
390
439
  }
391
440
  return _context2.abrupt("return", runApi('mount', function () {
392
- return _this2.doMount(renderOptions, sdkSelector);
441
+ return _this3.doMount(renderOptions, sdkSelector);
393
442
  }, undefined, normalizeApiInput('mount', {
394
443
  renderOptions: renderOptions,
395
444
  sdkSelector: sdkSelector
396
- }), this.merchantId));
445
+ }), this.merchantId, this.productScene));
397
446
  case 2:
398
447
  case "end":
399
448
  return _context2.stop();
400
449
  }
401
450
  }, _callee2, this);
402
451
  }));
403
- function mount(_x6, _x7) {
452
+ function mount(_x7, _x8) {
404
453
  return _mount.apply(this, arguments);
405
454
  }
406
455
  return mount;
@@ -454,7 +503,7 @@ export var ModernElementController = /*#__PURE__*/function () {
454
503
  if (iframeOrigin && iframeOrigin !== 'null') {
455
504
  this.bridge.setOrigin(iframeOrigin);
456
505
  }
457
- } catch (_unused5) {
506
+ } catch (_unused7) {
458
507
  // URL 解析失败时保持默认 origin
459
508
  }
460
509
  } else {
@@ -547,7 +596,7 @@ export var ModernElementController = /*#__PURE__*/function () {
547
596
  }
548
597
  }, _callee3, this, [[8, 44]]);
549
598
  }));
550
- function doMount(_x8, _x9) {
599
+ function doMount(_x9, _x10) {
551
600
  return _doMount.apply(this, arguments);
552
601
  }
553
602
  return doMount;
@@ -566,8 +615,9 @@ export var ModernElementController = /*#__PURE__*/function () {
566
615
  key: "setup",
567
616
  value: (function () {
568
617
  var _setup = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(renderOptions) {
569
- var _parseData$connectFac,
570
- _this3 = this,
618
+ var _parseData$paymentSes,
619
+ _parseData$connectFac,
620
+ _this4 = this,
571
621
  _parseData$paymentMet,
572
622
  _sdkQueryResult$data;
573
623
  var sessionData, parseData, lastEnv, isConnect, shouldQueryOneAccountFlag, 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;
@@ -578,21 +628,23 @@ export var ModernElementController = /*#__PURE__*/function () {
578
628
  this.trackMount('setup_start');
579
629
  // 缓存起来,submit时使用
580
630
  this.notRedirectAfterComplete = renderOptions.notRedirectAfterComplete || false;
581
- sessionData = this.options.sessionData; // checkSessionData 失败会 throw AntomSDKError(SESSION_DATA_INVALID),
582
- // 冒泡到 mount 的 catch 由 mount_error 统一上报,此处无需额外处理
631
+ sessionData = this.options.sessionData; // checkSessionData throws AntomSDKError (SESSION_DATA_INVALID) on invalid session data.
632
+ // The mount catch reports it as mount_error, so no extra handling is needed here.
583
633
  parseData = checkSessionData(sessionData, 'ELEMENT_PAYMENT');
634
+ this.merchantId || (this.merchantId = resolveMerchantId(parseData));
635
+ this.productScene = (parseData === null || parseData === void 0 || (_parseData$paymentSes = parseData.paymentSessionConfig) === null || _parseData$paymentSes === void 0 ? void 0 : _parseData$paymentSes.productScene) || '';
584
636
  lastEnv = this.options.environment === 'sandbox' ? 'sandbox' : 'prod';
585
637
  this.options.environment;
586
638
 
587
639
  // 初始化 request 全局配置,使 sdkQuery 能正确发起请求
588
- // tracker: sdkTracker —— 接入 HTTP 层自动埋点(B 套),上报每个请求的成败/RTT/错误码
589
- // 与 antom.ts 入口对齐;不传则 sdkQuery/submitPay/inquiry 等网络细节不可观测
640
+ // 实例级 tracker wrapper 接入 HTTP 自动埋点,并仅在日志中补齐 controller 公共维度。
641
+ // 不传 tracker 则 sdkQuery/submitPay/inquiry 等网络细节不可观测。
590
642
  request.setGlobalOptions(_objectSpread(_objectSpread({
591
643
  hostSign: parseHostSign(sessionData),
592
644
  env: lastEnv
593
645
  }, getDevReqConfig()), {}, {
594
- sdkVersion: "2.0.28" || '',
595
- tracker: sdkTracker
646
+ sdkVersion: "2.0.29" || '',
647
+ tracker: this.createRequestTracker()
596
648
  }));
597
649
  isConnect = !!(parseData !== null && parseData !== void 0 && (_parseData$connectFac = parseData.connectFactor) !== null && _parseData$connectFac !== void 0 && _parseData$connectFac.enableConnect);
598
650
  shouldQueryOneAccountFlag = shouldQueryOneAccount(isConnect, parseData === null || parseData === void 0 ? void 0 : parseData.extendInfo);
@@ -604,14 +656,14 @@ export var ModernElementController = /*#__PURE__*/function () {
604
656
  isUserPreferredLocale: true
605
657
  },
606
658
  merchantAppointParam: (_renderOptions$mercha = renderOptions.merchantAppointParam) !== null && _renderOptions$mercha !== void 0 && _renderOptions$mercha.storedCard ? renderOptions.merchantAppointParam : undefined,
607
- notRedirectAfterComplete: _this3.notRedirectAfterComplete,
659
+ notRedirectAfterComplete: _this4.notRedirectAfterComplete,
608
660
  // sdk需要传入该字段
609
661
  paymentSessionConfig: parseData === null || parseData === void 0 ? void 0 : parseData.paymentSessionConfig,
610
662
  paymentSessionData: sessionData
611
663
  }, {
612
664
  // 传商户初始化的 locale,服务端据此返回对应语言(缺失则回落用户偏好/en_US)
613
665
  envInfo: {
614
- locale: _this3.options.locale
666
+ locale: _this4.options.locale
615
667
  }
616
668
  }).catch(recoverSdkQueryBusinessResponse));
617
669
  };
@@ -627,14 +679,14 @@ export var ModernElementController = /*#__PURE__*/function () {
627
679
  promises = shouldQueryOneAccountFlag ? [genSdkQueryPromise(), genOneAccountQueryPromise()] : [genSdkQueryPromise(), undefined];
628
680
  cancelDestroyCallback = function cancelDestroyCallback() {};
629
681
  destroyPromise = new Promise(function (_, reject) {
630
- cancelDestroyCallback = _this3.onDestroy(function () {
682
+ cancelDestroyCallback = _this4.onDestroy(function () {
631
683
  return reject(getDestroyedError());
632
684
  });
633
685
  });
634
686
  queryPromise = Promise.all(promises);
635
- _context4.next = 19;
687
+ _context4.next = 21;
636
688
  return Promise.race([queryPromise, destroyPromise]).finally(cancelDestroyCallback);
637
- case 19:
689
+ case 21:
638
690
  _yield$Promise$race$f = _context4.sent;
639
691
  _yield$Promise$race$f2 = _slicedToArray(_yield$Promise$race$f, 2);
640
692
  sdkQueryResult = _yield$Promise$race$f2[0];
@@ -689,7 +741,7 @@ export var ModernElementController = /*#__PURE__*/function () {
689
741
  // 新sdk字段
690
742
  locale: locale,
691
743
  // 新sdk字段
692
- sdkVersion: "2.0.28" || '',
744
+ sdkVersion: "2.0.29" || '',
693
745
  // 新sdk字段
694
746
  merchantId: (sdkQueryResult === null || sdkQueryResult === void 0 || (_sdkQueryResult$data = sdkQueryResult.data) === null || _sdkQueryResult$data === void 0 ? void 0 : _sdkQueryResult$data.merchantId) || '',
695
747
  // 新sdk字段
@@ -699,13 +751,13 @@ export var ModernElementController = /*#__PURE__*/function () {
699
751
  env: lastEnv
700
752
  }, getDevReqConfig())
701
753
  });
702
- case 29:
754
+ case 31:
703
755
  case "end":
704
756
  return _context4.stop();
705
757
  }
706
758
  }, _callee4, this);
707
759
  }));
708
- function setup(_x10) {
760
+ function setup(_x11) {
709
761
  return _setup.apply(this, arguments);
710
762
  }
711
763
  return setup;
@@ -802,20 +854,20 @@ export var ModernElementController = /*#__PURE__*/function () {
802
854
  }, {
803
855
  key: "bindBridgeEvents",
804
856
  value: function bindBridgeEvents() {
805
- var _this4 = this;
857
+ var _this5 = this;
806
858
  this.bridge.on(MessageType.HEIGHT_UPDATE, function (height) {
807
- if (_this4.iframe) _this4.iframe.style.height = "".concat(height, "px");
859
+ if (_this5.iframe) _this5.iframe.style.height = "".concat(height, "px");
808
860
  });
809
861
  this.bridge.on(AMSMessageType.SHOWTOAST, function (payload, _ports, meta) {
810
- var _this4$iframe, _this4$modalIframe;
811
- if (meta && meta.source !== ((_this4$iframe = _this4.iframe) === null || _this4$iframe === void 0 ? void 0 : _this4$iframe.contentWindow) && meta.source !== ((_this4$modalIframe = _this4.modalIframe) === null || _this4$modalIframe === void 0 ? void 0 : _this4$modalIframe.contentWindow)) {
862
+ var _this5$iframe, _this5$modalIframe;
863
+ if (meta && meta.source !== ((_this5$iframe = _this5.iframe) === null || _this5$iframe === void 0 ? void 0 : _this5$iframe.contentWindow) && meta.source !== ((_this5$modalIframe = _this5.modalIframe) === null || _this5$modalIframe === void 0 ? void 0 : _this5$modalIframe.contentWindow)) {
812
864
  return;
813
865
  }
814
866
  showToast(payload);
815
867
  });
816
868
  this.bridge.on(MessageType.REDIRECT, function (payload, _ports, meta) {
817
- var _this4$iframe2, _this4$modalIframe2;
818
- if (meta && meta.source !== ((_this4$iframe2 = _this4.iframe) === null || _this4$iframe2 === void 0 ? void 0 : _this4$iframe2.contentWindow) && meta.source !== ((_this4$modalIframe2 = _this4.modalIframe) === null || _this4$modalIframe2 === void 0 ? void 0 : _this4$modalIframe2.contentWindow)) {
869
+ var _this5$iframe2, _this5$modalIframe2;
870
+ if (meta && meta.source !== ((_this5$iframe2 = _this5.iframe) === null || _this5$iframe2 === void 0 ? void 0 : _this5$iframe2.contentWindow) && meta.source !== ((_this5$modalIframe2 = _this5.modalIframe) === null || _this5$modalIframe2 === void 0 ? void 0 : _this5$modalIframe2.contentWindow)) {
819
871
  return;
820
872
  }
821
873
  var url = payload.url,
@@ -824,7 +876,7 @@ export var ModernElementController = /*#__PURE__*/function () {
824
876
  schemaUrl = payload.schemaUrl,
825
877
  destroy = payload.destroy;
826
878
  // d1=mode(redirect/replace) d2=跳转类型 d3=兜底url d4=appLinkUrl d5=schemaUrl d6=是否销毁
827
- _this4.trackElement('redirect', {
879
+ _this5.trackElement('redirect', {
828
880
  d1: mode || 'redirect',
829
881
  d2: appLinkUrl ? 'app_link' : schemaUrl ? 'schema' : 'url',
830
882
  d3: url || '',
@@ -833,7 +885,7 @@ export var ModernElementController = /*#__PURE__*/function () {
833
885
  d6: destroy ? '1' : '0'
834
886
  });
835
887
  if (destroy) {
836
- _this4.destroy();
888
+ _this5.destroy();
837
889
  }
838
890
  function fallbackJump() {
839
891
  if (mode === 'replace') {
@@ -847,7 +899,7 @@ export var ModernElementController = /*#__PURE__*/function () {
847
899
  var app = new CallApp({
848
900
  resultJudgmentTime: 2000,
849
901
  fallback: function fallback() {
850
- _this4.trackElement('redirect_fallback', {
902
+ _this5.trackElement('redirect_fallback', {
851
903
  d1: 'callapp_failed',
852
904
  d2: url || ''
853
905
  });
@@ -862,7 +914,7 @@ export var ModernElementController = /*#__PURE__*/function () {
862
914
  fallbackJump();
863
915
  }
864
916
  } catch (error) {
865
- _this4.trackError('redirect_error', {
917
+ _this5.trackError('redirect_error', {
866
918
  d1: 'callapp_exception',
867
919
  d2: (error === null || error === void 0 ? void 0 : error.message) || '',
868
920
  d3: url || ''
@@ -871,34 +923,34 @@ export var ModernElementController = /*#__PURE__*/function () {
871
923
  }
872
924
  });
873
925
  this.bridge.on(MessageType.OPEN_MODAL, function (payload, _ports, meta) {
874
- var _this4$iframe3;
875
- if (meta && meta.source !== ((_this4$iframe3 = _this4.iframe) === null || _this4$iframe3 === void 0 ? void 0 : _this4$iframe3.contentWindow)) {
926
+ var _this5$iframe3;
927
+ if (meta && meta.source !== ((_this5$iframe3 = _this5.iframe) === null || _this5$iframe3 === void 0 ? void 0 : _this5$iframe3.contentWindow)) {
876
928
  return;
877
929
  }
878
- _this4.handleOpenModal(payload);
879
- _this4.bridge.once(MessageType.CLOSE_MODAL, function () {
880
- _this4.handleCloseModal();
930
+ _this5.handleOpenModal(payload);
931
+ _this5.bridge.once(MessageType.CLOSE_MODAL, function () {
932
+ _this5.handleCloseModal();
881
933
  });
882
934
  });
883
935
  this.bridge.on(MessageType.DESTROY_ELEMENT, function (_payload, _ports, meta) {
884
- var _this4$iframe4;
885
- if (meta && meta.source !== ((_this4$iframe4 = _this4.iframe) === null || _this4$iframe4 === void 0 ? void 0 : _this4$iframe4.contentWindow)) {
936
+ var _this5$iframe4;
937
+ if (meta && meta.source !== ((_this5$iframe4 = _this5.iframe) === null || _this5$iframe4 === void 0 ? void 0 : _this5$iframe4.contentWindow)) {
886
938
  return;
887
939
  }
888
- _this4.destroy();
940
+ _this5.destroy();
889
941
  });
890
942
 
891
943
  // skipRenderPaymentMethod 场景:webapp 委托 SDK 全权拉起 ApplePay,fire-and-forget
892
944
  // 走 plugin/applepay 标准链路(onEventCallback 自动通知商户)
893
945
  this.bridge.on(AMSMessageType.HANDLE_PAYMENT, function () {
894
- _this4.handleHandlePayment();
946
+ _this5.handleHandlePayment();
895
947
  });
896
948
 
897
949
  // Apple Pay beforeConfirm:在 submitPayment 内通过 bridge.once 监听,此处不再注册
898
950
 
899
951
  // 支付方式变化:iframe 通知 SDK 当前选中的支付方式类型
900
952
  this.bridge.on(AMSMessageType.PAYMENT_METHOD_CHANGED, function (payload) {
901
- _this4.currentPaymentMethodType = (payload === null || payload === void 0 ? void 0 : payload.type) || '';
953
+ _this5.currentPaymentMethodType = (payload === null || payload === void 0 ? void 0 : payload.type) || '';
902
954
  });
903
955
  }
904
956
 
@@ -912,7 +964,7 @@ export var ModernElementController = /*#__PURE__*/function () {
912
964
  value: (function () {
913
965
  var _handleGetApplePayToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(payload, onBeforeConfirm) {
914
966
  var _paymentMethod,
915
- _this5 = this;
967
+ _this6 = this;
916
968
  var sessionData, applePayProps, paymentRequest, merchantCapabilities, merchantInfo, paymentAmount, supportedNetworks, version, requiredBillingContactFields, requiredShippingContactFields, finalAmount, finalCurrency, capturedResult, recurringRequest, service, _capturedResult, errCode;
917
969
  return _regeneratorRuntime().wrap(function _callee7$(_context7) {
918
970
  while (1) switch (_context7.prev = _context7.next) {
@@ -984,7 +1036,7 @@ export var ModernElementController = /*#__PURE__*/function () {
984
1036
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
985
1037
  while (1) switch (_context5.prev = _context5.next) {
986
1038
  case 0:
987
- _this5.trackElement('applepay_validate_start', {
1039
+ _this6.trackElement('applepay_validate_start', {
988
1040
  d1: 'merchant_validate'
989
1041
  });
990
1042
  _context5.next = 3;
@@ -993,7 +1045,7 @@ export var ModernElementController = /*#__PURE__*/function () {
993
1045
  paymentSessionData: sessionData,
994
1046
  merchantDomain: window.location.hostname
995
1047
  }, {
996
- env: _this5.options.environment,
1048
+ env: _this6.options.environment,
997
1049
  envInfo: {
998
1050
  deviceId: ''
999
1051
  }
@@ -1004,12 +1056,12 @@ export var ModernElementController = /*#__PURE__*/function () {
1004
1056
  _context5.next = 7;
1005
1057
  break;
1006
1058
  }
1007
- _this5.trackElement('applepay_validate_success', {
1059
+ _this6.trackElement('applepay_validate_success', {
1008
1060
  d1: 'got_session'
1009
1061
  });
1010
1062
  return _context5.abrupt("return", typeof res.merchantSessionObject === 'string' ? JSON.parse(res.merchantSessionObject) : res.merchantSessionObject);
1011
1063
  case 7:
1012
- _this5.trackError('applepay_merchant_validate_failed', {
1064
+ _this6.trackError('applepay_merchant_validate_failed', {
1013
1065
  d1: 'VALIDATION_FAILED',
1014
1066
  d2: (res === null || res === void 0 ? void 0 : res.errorMessage) || 'Merchant validation failed'
1015
1067
  });
@@ -1022,7 +1074,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1022
1074
  }
1023
1075
  }, _callee5);
1024
1076
  }));
1025
- function validateMerchant(_x13) {
1077
+ function validateMerchant(_x14) {
1026
1078
  return _validateMerchant.apply(this, arguments);
1027
1079
  }
1028
1080
  return validateMerchant;
@@ -1052,7 +1104,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1052
1104
  isTimeout = timedOut || Date.now() - startTime >= BEFORE_CONFIRM_TIMEOUT_MS;
1053
1105
  shouldContinue = !isTimeout && !!rawResult;
1054
1106
  if (isTimeout) {
1055
- _this5.trackError('sdk_before_confirm_timeout', {
1107
+ _this6.trackError('sdk_before_confirm_timeout', {
1056
1108
  d1: 'applePay_chrome_modern'
1057
1109
  });
1058
1110
  }
@@ -1080,7 +1132,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1080
1132
  billingContact: billingContact,
1081
1133
  shippingContact: shippingContact
1082
1134
  };
1083
- _this5.trackElement('applepay_authorized', {
1135
+ _this6.trackElement('applepay_authorized', {
1084
1136
  d1: token ? 'has_token' : 'no_token'
1085
1137
  });
1086
1138
  return _context6.abrupt("return", {
@@ -1093,7 +1145,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1093
1145
  }
1094
1146
  }, _callee6, null, [[2, 16]]);
1095
1147
  }));
1096
- function onAuthorized(_x14) {
1148
+ function onAuthorized(_x15) {
1097
1149
  return _onAuthorized.apply(this, arguments);
1098
1150
  }
1099
1151
  return onAuthorized;
@@ -1142,7 +1194,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1142
1194
  }
1143
1195
  }, _callee7, this, [[15, 22]]);
1144
1196
  }));
1145
- function handleGetApplePayToken(_x11, _x12) {
1197
+ function handleGetApplePayToken(_x12, _x13) {
1146
1198
  return _handleGetApplePayToken.apply(this, arguments);
1147
1199
  }
1148
1200
  return handleGetApplePayToken;
@@ -1167,7 +1219,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1167
1219
  key: "handleGetGooglePayToken",
1168
1220
  value: function handleGetGooglePayToken(payload) {
1169
1221
  var _data$paymentMethodDe,
1170
- _this6 = this,
1222
+ _this7 = this,
1171
1223
  _google;
1172
1224
  var data = payload === null || payload === void 0 ? void 0 : payload.data;
1173
1225
  var googlePayProps = data === null || data === void 0 || (_data$paymentMethodDe = data.paymentMethodDetail) === null || _data$paymentMethodDe === void 0 ? void 0 : _data$paymentMethodDe.googlePayProps;
@@ -1211,10 +1263,10 @@ export var ModernElementController = /*#__PURE__*/function () {
1211
1263
  };
1212
1264
  }).then(function (paymentData) {
1213
1265
  if (paymentData) {
1214
- _this6.trackElement('googlepay_token_success', {
1266
+ _this7.trackElement('googlepay_token_success', {
1215
1267
  d1: 'has_token'
1216
1268
  });
1217
- _this6.bridge.send(AMSMessageType.GET_GOOGLE_PAY_TOKEN_REPLY, {
1269
+ _this7.bridge.send(AMSMessageType.GET_GOOGLE_PAY_TOKEN_REPLY, {
1218
1270
  success: true,
1219
1271
  result: paymentData
1220
1272
  });
@@ -1222,16 +1274,16 @@ export var ModernElementController = /*#__PURE__*/function () {
1222
1274
  }).catch(function (err) {
1223
1275
  var statusCode = (err === null || err === void 0 ? void 0 : err.statusCode) || 'GOOGLE_PAY_PAYMENT_FAILED';
1224
1276
  if (statusCode === 'CANCELED') {
1225
- _this6.trackElement('googlepay_cancel', {
1277
+ _this7.trackElement('googlepay_cancel', {
1226
1278
  d1: 'user_cancel'
1227
1279
  });
1228
1280
  } else {
1229
- _this6.trackError('googlepay_token_failed', {
1281
+ _this7.trackError('googlepay_token_failed', {
1230
1282
  d1: statusCode,
1231
1283
  d2: (err === null || err === void 0 ? void 0 : err.statusMessage) || ''
1232
1284
  });
1233
1285
  }
1234
- _this6.bridge.send(AMSMessageType.GET_GOOGLE_PAY_TOKEN_REPLY, {
1286
+ _this7.bridge.send(AMSMessageType.GET_GOOGLE_PAY_TOKEN_REPLY, {
1235
1287
  success: false,
1236
1288
  err: _objectSpread({
1237
1289
  statusCode: statusCode
@@ -1263,10 +1315,10 @@ export var ModernElementController = /*#__PURE__*/function () {
1263
1315
  loadAndPay();
1264
1316
  };
1265
1317
  script.onerror = function () {
1266
- _this6.trackError('googlepay_script_load_failed', {
1318
+ _this7.trackError('googlepay_script_load_failed', {
1267
1319
  d1: 'script_error'
1268
1320
  });
1269
- _this6.bridge.send(AMSMessageType.GET_GOOGLE_PAY_TOKEN_REPLY, {
1321
+ _this7.bridge.send(AMSMessageType.GET_GOOGLE_PAY_TOKEN_REPLY, {
1270
1322
  success: false,
1271
1323
  err: {
1272
1324
  statusCode: 'GOOGLE_PAY_NOT_SUPPORTED'
@@ -1315,7 +1367,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1315
1367
  }, {
1316
1368
  key: "handleBeforeConfirmInternal",
1317
1369
  value: function handleBeforeConfirmInternal(onBeforeConfirm) {
1318
- var _this7 = this;
1370
+ var _this8 = this;
1319
1371
  if (!onBeforeConfirm) {
1320
1372
  logger.logInfo({
1321
1373
  title: 'sdk_before_confirm_skip'
@@ -1352,7 +1404,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1352
1404
  }, {
1353
1405
  shouldContinue: shouldContinue
1354
1406
  });
1355
- _this7.bridge.send(AMSMessageType.BEFORE_CONFIRM_REPLY, _objectSpread({
1407
+ _this8.bridge.send(AMSMessageType.BEFORE_CONFIRM_REPLY, _objectSpread({
1356
1408
  success: true,
1357
1409
  result: !!shouldContinue
1358
1410
  }, isTimeout ? {
@@ -1365,7 +1417,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1365
1417
  errorMessage: String((error === null || error === void 0 ? void 0 : error.message) || error).slice(0, 200),
1366
1418
  path: 'modernController_bridge'
1367
1419
  });
1368
- _this7.bridge.send(AMSMessageType.BEFORE_CONFIRM_REPLY, {
1420
+ _this8.bridge.send(AMSMessageType.BEFORE_CONFIRM_REPLY, {
1369
1421
  success: false,
1370
1422
  result: false
1371
1423
  });
@@ -1379,12 +1431,12 @@ export var ModernElementController = /*#__PURE__*/function () {
1379
1431
  }, {
1380
1432
  key: "waitForReadyHandshake",
1381
1433
  value: function waitForReadyHandshake() {
1382
- var _this8 = this;
1434
+ var _this9 = this;
1383
1435
  return new Promise(function (resolve, reject) {
1384
1436
  var cancelDestroyCallback = function cancelDestroyCallback() {};
1385
1437
  var timer = setTimeout(function () {
1386
1438
  cancelDestroyCallback();
1387
- _this8.trackError('ready_handshake_timeout', {
1439
+ _this9.trackError('ready_handshake_timeout', {
1388
1440
  d1: String(MOUNT_TIMEOUT)
1389
1441
  });
1390
1442
  reject({
@@ -1392,16 +1444,16 @@ export var ModernElementController = /*#__PURE__*/function () {
1392
1444
  message: 'An error occurred; the transaction cannot be initiated.'
1393
1445
  });
1394
1446
  }, MOUNT_TIMEOUT);
1395
- cancelDestroyCallback = _this8.onDestroy(function () {
1447
+ cancelDestroyCallback = _this9.onDestroy(function () {
1396
1448
  clearTimeout(timer);
1397
1449
  reject(getDestroyedError());
1398
1450
  });
1399
- _this8.bridge.once(MessageType.READY_HANDSHAKE, function () {
1400
- var _this8$iframe;
1451
+ _this9.bridge.once(MessageType.READY_HANDSHAKE, function () {
1452
+ var _this9$iframe;
1401
1453
  clearTimeout(timer);
1402
1454
  cancelDestroyCallback();
1403
- if (!((_this8$iframe = _this8.iframe) !== null && _this8$iframe !== void 0 && _this8$iframe.contentWindow)) {
1404
- _this8.trackError('iframe_contentwindow_unavailable', {
1455
+ if (!((_this9$iframe = _this9.iframe) !== null && _this9$iframe !== void 0 && _this9$iframe.contentWindow)) {
1456
+ _this9.trackError('iframe_contentwindow_unavailable', {
1405
1457
  d1: 'after_ready_handshake'
1406
1458
  });
1407
1459
  reject({
@@ -1410,9 +1462,9 @@ export var ModernElementController = /*#__PURE__*/function () {
1410
1462
  });
1411
1463
  return;
1412
1464
  }
1413
- _this8.bridge.setTarget(_this8.iframe.contentWindow);
1414
- _this8.trackHandshake('ready_handshake_received', {
1415
- m1: _this8._mountStartTime ? Date.now() - _this8._mountStartTime : 0
1465
+ _this9.bridge.setTarget(_this9.iframe.contentWindow);
1466
+ _this9.trackHandshake('ready_handshake_received', {
1467
+ m1: _this9._mountStartTime ? Date.now() - _this9._mountStartTime : 0
1416
1468
  });
1417
1469
  resolve();
1418
1470
  });
@@ -1437,12 +1489,12 @@ export var ModernElementController = /*#__PURE__*/function () {
1437
1489
  }, {
1438
1490
  key: "waitForHandshakeAck",
1439
1491
  value: function waitForHandshakeAck() {
1440
- var _this9 = this;
1492
+ var _this10 = this;
1441
1493
  return new Promise(function (resolve, reject) {
1442
1494
  var cancelDestroyCallback = function cancelDestroyCallback() {};
1443
1495
  var timer = setTimeout(function () {
1444
1496
  cancelDestroyCallback();
1445
- _this9.trackError('handshake_ack_timeout', {
1497
+ _this10.trackError('handshake_ack_timeout', {
1446
1498
  d1: String(MOUNT_TIMEOUT)
1447
1499
  });
1448
1500
  reject({
@@ -1450,15 +1502,15 @@ export var ModernElementController = /*#__PURE__*/function () {
1450
1502
  message: 'An error occurred; the transaction cannot be initiated.'
1451
1503
  });
1452
1504
  }, MOUNT_TIMEOUT);
1453
- cancelDestroyCallback = _this9.onDestroy(function () {
1505
+ cancelDestroyCallback = _this10.onDestroy(function () {
1454
1506
  clearTimeout(timer);
1455
1507
  reject(getDestroyedError());
1456
1508
  });
1457
- _this9.bridge.once(MessageType.HANDSHAKE_ACK, function () {
1509
+ _this10.bridge.once(MessageType.HANDSHAKE_ACK, function () {
1458
1510
  clearTimeout(timer);
1459
1511
  cancelDestroyCallback();
1460
- _this9.trackHandshake('handshake_ack_received', {
1461
- m1: _this9._mountStartTime ? Date.now() - _this9._mountStartTime : 0
1512
+ _this10.trackHandshake('handshake_ack_received', {
1513
+ m1: _this10._mountStartTime ? Date.now() - _this10._mountStartTime : 0
1462
1514
  });
1463
1515
  resolve();
1464
1516
  });
@@ -1468,24 +1520,24 @@ export var ModernElementController = /*#__PURE__*/function () {
1468
1520
  key: "submitPayment",
1469
1521
  value: function () {
1470
1522
  var _submitPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(params) {
1471
- var _this10 = this;
1523
+ var _this11 = this;
1472
1524
  return _regeneratorRuntime().wrap(function _callee8$(_context8) {
1473
1525
  while (1) switch (_context8.prev = _context8.next) {
1474
1526
  case 0:
1475
1527
  return _context8.abrupt("return", runApi('submitPayment', function () {
1476
- return _this10.doSubmitPayment(params);
1528
+ return _this11.doSubmitPayment(params);
1477
1529
  }, function () {
1478
- return _this10.currentPaymentMethodType ? {
1479
- d4: _this10.currentPaymentMethodType
1530
+ return _this11.currentPaymentMethodType ? {
1531
+ d4: _this11.currentPaymentMethodType
1480
1532
  } : {};
1481
- }, normalizeApiInput('submitPayment', params), this.merchantId));
1533
+ }, normalizeApiInput('submitPayment', params), this.merchantId, this.productScene));
1482
1534
  case 1:
1483
1535
  case "end":
1484
1536
  return _context8.stop();
1485
1537
  }
1486
1538
  }, _callee8, this);
1487
1539
  }));
1488
- function submitPayment(_x15) {
1540
+ function submitPayment(_x16) {
1489
1541
  return _submitPayment.apply(this, arguments);
1490
1542
  }
1491
1543
  return submitPayment;
@@ -1494,7 +1546,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1494
1546
  key: "doSubmitPayment",
1495
1547
  value: function () {
1496
1548
  var _doSubmitPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(params) {
1497
- var _this11 = this;
1549
+ var _this12 = this;
1498
1550
  var _this$options$loading7, _this$options$loading8, isApplePay, _ref6, onBeforeConfirm, serializableParams, startTime, _yield$executeWithTim2, shouldContinue, timedOut, isTimeout, hasBeforeConfirmForApplePay, hasAmount, hasCurrency, cleanups, _result$error5, resultPromise, result, _this$options$loading9, _this$options$loading10;
1499
1551
  return _regeneratorRuntime().wrap(function _callee9$(_context9) {
1500
1552
  while (1) switch (_context9.prev = _context9.next) {
@@ -1647,20 +1699,20 @@ export var ModernElementController = /*#__PURE__*/function () {
1647
1699
  resultPromise = new Promise(function (resolve) {
1648
1700
  // 先注册事件监听,再发送 SUBMIT,避免 webapp 快速响应导致消息丢失
1649
1701
  // PC 非 Safari:webapp 委托 SDK 拉起 Apple Pay 拿 token
1650
- cleanups.push(_this11.bridge.once(AMSMessageType.GET_APPLE_PAY_TOKEN, function (payload) {
1651
- _this11.handleGetApplePayToken(payload, onBeforeConfirm).then(function () {
1702
+ cleanups.push(_this12.bridge.once(AMSMessageType.GET_APPLE_PAY_TOKEN, function (payload) {
1703
+ _this12.handleGetApplePayToken(payload, onBeforeConfirm).then(function () {
1652
1704
  // token 已回传 webapp,继续等 SUBMIT_REPLY
1653
1705
  });
1654
1706
  }));
1655
1707
  // Web element GP:webapp 委托 SDK/父 frame 调 loadPaymentData 拿 token
1656
- cleanups.push(_this11.bridge.once(AMSMessageType.GET_GOOGLE_PAY_TOKEN, function (payload) {
1657
- _this11.handleGetGooglePayToken(payload);
1708
+ cleanups.push(_this12.bridge.once(AMSMessageType.GET_GOOGLE_PAY_TOKEN, function (payload) {
1709
+ _this12.handleGetGooglePayToken(payload);
1658
1710
  }));
1659
1711
  // Safari:webapp 请求执行商户 onBeforeConfirm 回调
1660
- cleanups.push(_this11.bridge.once(AMSMessageType.BEFORE_CONFIRM, function () {
1661
- _this11.handleBeforeConfirmInternal(onBeforeConfirm || null);
1712
+ cleanups.push(_this12.bridge.once(AMSMessageType.BEFORE_CONFIRM, function () {
1713
+ _this12.handleBeforeConfirmInternal(onBeforeConfirm || null);
1662
1714
  }));
1663
- cleanups.push(_this11.bridge.once(MessageType.SUBMIT_REPLY, resolve));
1715
+ cleanups.push(_this12.bridge.once(MessageType.SUBMIT_REPLY, resolve));
1664
1716
  }); // 监听注册完成后再发送 SUBMIT,确保不会遗漏快速响应
1665
1717
  this.send(MessageType.SUBMIT, _objectSpread(_objectSpread({}, serializableParams), {}, {
1666
1718
  redirect: this.notRedirectAfterComplete ? 'if_required' : 'always',
@@ -1691,7 +1743,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1691
1743
  cleanups.forEach(function (fn) {
1692
1744
  try {
1693
1745
  fn();
1694
- } catch (_unused7) {
1746
+ } catch (_unused9) {
1695
1747
  /* ignore cleanup error */
1696
1748
  }
1697
1749
  });
@@ -1707,7 +1759,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1707
1759
  }
1708
1760
  }, _callee9, this, [[7,, 60, 63], [12, 26], [42, 52, 56, 60]]);
1709
1761
  }));
1710
- function doSubmitPayment(_x16) {
1762
+ function doSubmitPayment(_x17) {
1711
1763
  return _doSubmitPayment.apply(this, arguments);
1712
1764
  }
1713
1765
  return doSubmitPayment;
@@ -1716,13 +1768,13 @@ export var ModernElementController = /*#__PURE__*/function () {
1716
1768
  key: "validateFields",
1717
1769
  value: function () {
1718
1770
  var _validateFields = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
1719
- var _this12 = this;
1771
+ var _this13 = this;
1720
1772
  return _regeneratorRuntime().wrap(function _callee10$(_context10) {
1721
1773
  while (1) switch (_context10.prev = _context10.next) {
1722
1774
  case 0:
1723
1775
  return _context10.abrupt("return", runApi('validateFields', function () {
1724
- return _this12.doValidateFields();
1725
- }, undefined, undefined, this.merchantId));
1776
+ return _this13.doValidateFields();
1777
+ }, undefined, undefined, this.merchantId, this.productScene));
1726
1778
  case 1:
1727
1779
  case "end":
1728
1780
  return _context10.stop();
@@ -1738,7 +1790,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1738
1790
  key: "doValidateFields",
1739
1791
  value: function () {
1740
1792
  var _doValidateFields = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
1741
- var _this13 = this;
1793
+ var _this14 = this;
1742
1794
  return _regeneratorRuntime().wrap(function _callee11$(_context11) {
1743
1795
  while (1) switch (_context11.prev = _context11.next) {
1744
1796
  case 0:
@@ -1756,17 +1808,17 @@ export var ModernElementController = /*#__PURE__*/function () {
1756
1808
  this.send(AMSMessageType.VALIDATE);
1757
1809
  return _context11.abrupt("return", new Promise(function (resolve) {
1758
1810
  var timer = setTimeout(function () {
1759
- _this13.trackError('validate_fields_timeout', {
1811
+ _this14.trackError('validate_fields_timeout', {
1760
1812
  d1: '15000'
1761
1813
  });
1762
1814
  resolve({
1763
1815
  isValid: false
1764
1816
  });
1765
1817
  }, 15000);
1766
- _this13.bridge.once(AMSMessageType.VALIDATE_REPLY, function (payload) {
1818
+ _this14.bridge.once(AMSMessageType.VALIDATE_REPLY, function (payload) {
1767
1819
  clearTimeout(timer);
1768
1820
  var isValid = !!(payload !== null && payload !== void 0 && payload.isValid);
1769
- _this13.trackElement('validate_result', {
1821
+ _this14.trackElement('validate_result', {
1770
1822
  d1: isValid ? 'valid' : 'invalid'
1771
1823
  });
1772
1824
  resolve(payload || {
@@ -1799,7 +1851,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1799
1851
  }
1800
1852
  }, _callee12);
1801
1853
  }));
1802
- function updatePayment(_x17) {
1854
+ function updatePayment(_x18) {
1803
1855
  return _updatePayment.apply(this, arguments);
1804
1856
  }
1805
1857
  return updatePayment;
@@ -1850,7 +1902,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1850
1902
  }, {
1851
1903
  key: "onDestroy",
1852
1904
  value: function onDestroy(callback) {
1853
- var _this14 = this;
1905
+ var _this15 = this;
1854
1906
  if (this.status === 'destroyed') {
1855
1907
  callback();
1856
1908
  return function () {
@@ -1859,7 +1911,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1859
1911
  }
1860
1912
  this.destroyCallbacks.push(callback);
1861
1913
  return function () {
1862
- _this14.destroyCallbacks = _this14.destroyCallbacks.filter(function (item) {
1914
+ _this15.destroyCallbacks = _this15.destroyCallbacks.filter(function (item) {
1863
1915
  return item !== callback;
1864
1916
  });
1865
1917
  };
@@ -1899,12 +1951,12 @@ export var ModernElementController = /*#__PURE__*/function () {
1899
1951
  }, {
1900
1952
  key: "flushCachedMessages",
1901
1953
  value: function flushCachedMessages() {
1902
- var _this15 = this;
1954
+ var _this16 = this;
1903
1955
  if (this.cachedSend.length > 0) {
1904
1956
  this.cachedSend.forEach(function (_ref7) {
1905
1957
  var type = _ref7.type,
1906
1958
  payload = _ref7.payload;
1907
- _this15.bridge.send(type, payload);
1959
+ _this16.bridge.send(type, payload);
1908
1960
  });
1909
1961
  this.cachedSend = [];
1910
1962
  }
@@ -1927,7 +1979,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1927
1979
  var _payload$appearance,
1928
1980
  _themeColorMap$appear,
1929
1981
  _payload$appearance2,
1930
- _this16 = this;
1982
+ _this17 = this;
1931
1983
  // 清理已存在的 modal
1932
1984
  this.handleCloseModal();
1933
1985
  var mode = device.isMobile ? 'mobile' : 'desktop';
@@ -1983,7 +2035,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1983
2035
  destroy = _openModal.destroy;
1984
2036
  var offReady = modalBridge.once(MessageType.MODAL_TRANSFER_READY, function (_payload, _ports, meta) {
1985
2037
  if (meta && meta.source !== iframe.contentWindow) return;
1986
- _this16.trackElement('modal_loaded', {
2038
+ _this17.trackElement('modal_loaded', {
1987
2039
  d1: payload.url
1988
2040
  });
1989
2041
  // 确保 target 已设置(如果 load 事件尚未触发,在此设置)
@@ -1994,7 +2046,7 @@ export var ModernElementController = /*#__PURE__*/function () {
1994
2046
  if (iframeOrigin && iframeOrigin !== 'null') {
1995
2047
  modalBridge.setOrigin(iframeOrigin);
1996
2048
  }
1997
- } catch (_unused8) {
2049
+ } catch (_unused10) {
1998
2050
  // URL 解析失败时保持默认 origin
1999
2051
  }
2000
2052
  // 如果 payload 有 appearance,通过 TRANSFER_MODAL_APPEARANCE 消息发送给 modal
@@ -2012,13 +2064,13 @@ export var ModernElementController = /*#__PURE__*/function () {
2012
2064
  this.modalIframe = iframe;
2013
2065
  this.modalDestroy = function () {
2014
2066
  if (payload.closeConfirm) {
2015
- _this16.trackElement('modal_close_confirm', {
2067
+ _this17.trackElement('modal_close_confirm', {
2016
2068
  d1: 'confirm_resolved'
2017
2069
  });
2018
2070
  }
2019
2071
  destroy();
2020
2072
  offReady();
2021
- _this16.modalIframe = null;
2073
+ _this17.modalIframe = null;
2022
2074
  };
2023
2075
  }
2024
2076