@alipay/ams-checkout 0.0.1784626568-dev.7 → 0.0.1784626568-dev.9

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.
@@ -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.1784626568-dev.7";
33
+ export var sdkVersion = "0.0.1784626568-dev.9";
34
34
 
35
35
  /**
36
36
  * @description: 目前应用层分为v1和v2,会存在两个应用版本号不是同步发布的情况。所以需要把默认的应用版本号配置抽离出来。
@@ -27,6 +27,7 @@ export declare class ModernElementController implements IElementController {
27
27
  private cachedSend;
28
28
  private modalBridge;
29
29
  private modalDestroy;
30
+ private modalIframe;
30
31
  private _closeConfirmResolve;
31
32
  private notRedirectAfterComplete;
32
33
  private _sdkInitTime;
@@ -29,7 +29,7 @@ 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, 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";
@@ -88,6 +88,9 @@ var recoverSdkQueryBusinessResponse = function recoverSdkQueryBusinessResponse(e
88
88
  var MOUNT_TIMEOUT = 16000;
89
89
  var logger = new Logger(LogConfig, true);
90
90
  var ELEMENT_DESTROYED_MESSAGE = 'Element already destroyed';
91
+ // 订阅/分期场景 ApplePaySession 版本:recurringPaymentRequest 需 v12+。
92
+ // 对齐老链路 plugin/applepay/interface.ts 的 APPLE_PAY_RECURRING_VERSION = 14。
93
+ var APPLE_PAY_RECURRING_VERSION = 14;
91
94
  var getDestroyedError = function getDestroyedError() {
92
95
  return {
93
96
  code: ERRORMESSAGE.UI_STATE_ERROR.code,
@@ -185,6 +188,7 @@ export var ModernElementController = /*#__PURE__*/function () {
185
188
  // Modal 相关资源
186
189
  _defineProperty(this, "modalBridge", null);
187
190
  _defineProperty(this, "modalDestroy", null);
191
+ _defineProperty(this, "modalIframe", null);
188
192
  _defineProperty(this, "_closeConfirmResolve", null);
189
193
  _defineProperty(this, "notRedirectAfterComplete", false);
190
194
  _defineProperty(this, "_sdkInitTime", Date.now());
@@ -400,7 +404,7 @@ export var ModernElementController = /*#__PURE__*/function () {
400
404
  request.setGlobalOptions({
401
405
  hostSign: parseHostSign(sessionData),
402
406
  env: this.options.environment,
403
- sdkVersion: "0.0.1784626568-dev.7" || '',
407
+ sdkVersion: "0.0.1784626568-dev.9" || '',
404
408
  tracker: sdkTracker
405
409
  });
406
410
  isConnect = !!(parseData !== null && parseData !== void 0 && (_parseData$connectFac = parseData.connectFactor) !== null && _parseData$connectFac !== void 0 && _parseData$connectFac.enableConnect);
@@ -496,7 +500,7 @@ export var ModernElementController = /*#__PURE__*/function () {
496
500
  // 新sdk字段
497
501
  locale: locale,
498
502
  // 新sdk字段
499
- sdkVersion: "0.0.1784626568-dev.7" || '',
503
+ sdkVersion: "0.0.1784626568-dev.9" || '',
500
504
  // 新sdk字段
501
505
  merchantId: (sdkQueryResult === null || sdkQueryResult === void 0 || (_sdkQueryResult$data = sdkQueryResult.data) === null || _sdkQueryResult$data === void 0 ? void 0 : _sdkQueryResult$data.merchantId) || '',
502
506
  // 新sdk字段
@@ -614,8 +618,8 @@ export var ModernElementController = /*#__PURE__*/function () {
614
618
  if (_this2.iframe) _this2.iframe.style.height = "".concat(height, "px");
615
619
  });
616
620
  this.bridge.on(MessageType.REDIRECT, function (payload, _ports, meta) {
617
- var _this2$iframe;
618
- if (meta && meta.source !== ((_this2$iframe = _this2.iframe) === null || _this2$iframe === void 0 ? void 0 : _this2$iframe.contentWindow)) {
621
+ var _this2$iframe, _this2$modalIframe;
622
+ 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)) {
619
623
  return;
620
624
  }
621
625
  var url = payload.url,
@@ -713,7 +717,7 @@ export var ModernElementController = /*#__PURE__*/function () {
713
717
  var _handleGetApplePayToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(payload, onBeforeConfirm) {
714
718
  var _paymentMethod,
715
719
  _this3 = this;
716
- var sessionData, applePayProps, paymentRequest, merchantCapabilities, merchantInfo, paymentAmount, supportedNetworks, version, requiredBillingContactFields, requiredShippingContactFields, finalAmount, finalCurrency, capturedResult, service, _capturedResult, errCode;
720
+ var sessionData, applePayProps, paymentRequest, merchantCapabilities, merchantInfo, paymentAmount, supportedNetworks, version, requiredBillingContactFields, requiredShippingContactFields, finalAmount, finalCurrency, capturedResult, recurringRequest, service, _capturedResult, errCode;
717
721
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
718
722
  while (1) switch (_context5.prev = _context5.next) {
719
723
  case 0:
@@ -747,21 +751,35 @@ export var ModernElementController = /*#__PURE__*/function () {
747
751
  if (this._merchantCurrency) {
748
752
  finalCurrency = this._merchantCurrency;
749
753
  }
754
+ // 订阅场景:从 sessionData 提取 recurringInfo 构造 recurringPaymentRequest。
755
+ // 对齐老 ApplePaySdk 链路(parseData.paymentSessionFactor.recurringInfo)与
756
+ // Express 链路(applePayHostToken.ts),否则 Chrome 非 Safari 会降级为普通支付弹窗。
757
+ recurringRequest = buildRecurringPaymentRequest(sessionData, merchantInfo, {
758
+ value: finalAmount,
759
+ currency: finalCurrency
760
+ });
750
761
  service = new ApplePayHostService({
751
- paymentRequest: {
762
+ paymentRequest: _objectSpread({
752
763
  countryCode: merchantInfo === null || merchantInfo === void 0 ? void 0 : merchantInfo.countryCode,
753
764
  currencyCode: finalCurrency,
754
765
  merchantCapabilities: merchantCapabilities,
755
766
  supportedNetworks: supportedNetworks,
756
767
  requiredBillingContactFields: requiredBillingContactFields,
757
768
  requiredShippingContactFields: requiredShippingContactFields,
758
- total: {
769
+ total: recurringRequest ? {
770
+ type: 'final',
771
+ label: recurringRequest.regularBilling.label,
772
+ amount: finalAmount
773
+ } : {
759
774
  type: 'final',
760
775
  label: (merchantInfo === null || merchantInfo === void 0 ? void 0 : merchantInfo.merchantName) || 'Payment',
761
776
  amount: finalAmount
762
777
  },
763
- version: version
764
- },
778
+ version: recurringRequest ? APPLE_PAY_RECURRING_VERSION : version
779
+ }, recurringRequest ? {
780
+ lineItems: [recurringRequest.regularBilling],
781
+ recurringPaymentRequest: recurringRequest
782
+ } : {}),
765
783
  enableModalCloseListener: true,
766
784
  callbacks: {
767
785
  validateMerchant: function () {
@@ -885,10 +903,10 @@ export var ModernElementController = /*#__PURE__*/function () {
885
903
  }()
886
904
  }
887
905
  });
888
- _context5.prev = 14;
889
- _context5.next = 17;
906
+ _context5.prev = 15;
907
+ _context5.next = 18;
890
908
  return service.startPay();
891
- case 17:
909
+ case 18:
892
910
  trackElement('applepay_token_success', {
893
911
  d1: (_capturedResult = capturedResult) !== null && _capturedResult !== void 0 && _capturedResult.token ? 'has_token' : 'no_token'
894
912
  });
@@ -896,11 +914,11 @@ export var ModernElementController = /*#__PURE__*/function () {
896
914
  success: true,
897
915
  result: capturedResult
898
916
  });
899
- _context5.next = 25;
917
+ _context5.next = 26;
900
918
  break;
901
- case 21:
902
- _context5.prev = 21;
903
- _context5.t0 = _context5["catch"](14);
919
+ case 22:
920
+ _context5.prev = 22;
921
+ _context5.t0 = _context5["catch"](15);
904
922
  // 商户验证失败已在 validateMerchant 内单独埋点(applepay_merchant_validate_failed),此处跳过避免重复
905
923
  if ((_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.errorCode) !== 'APPLE_PAY_PAYMENT_SESSION_REQUEST_FAILED') {
906
924
  errCode = (_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.errorCode) || 'APPLE_PAY_NOT_SUPPORTED'; // 用户主动取消单独标记,便于区分取消与真实失败
@@ -921,11 +939,11 @@ export var ModernElementController = /*#__PURE__*/function () {
921
939
  errorCode: (_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.errorCode) || 'APPLE_PAY_NOT_SUPPORTED'
922
940
  }
923
941
  });
924
- case 25:
942
+ case 26:
925
943
  case "end":
926
944
  return _context5.stop();
927
945
  }
928
- }, _callee5, this, [[14, 21]]);
946
+ }, _callee5, this, [[15, 22]]);
929
947
  }));
930
948
  function handleGetApplePayToken(_x4, _x5) {
931
949
  return _handleGetApplePayToken.apply(this, arguments);
@@ -1728,9 +1746,11 @@ export var ModernElementController = /*#__PURE__*/function () {
1728
1746
  modalBridge.send(MessageType.TRANSFER_MODAL_PORT, payload.modalId, [messageChannel.port2]);
1729
1747
  }
1730
1748
  };
1749
+ this.modalIframe = iframe;
1731
1750
  this.modalDestroy = function () {
1732
1751
  destroy();
1733
1752
  iframe.removeEventListener('load', handler);
1753
+ _this12.modalIframe = null;
1734
1754
  };
1735
1755
 
1736
1756
  // 监听 modal 的 iframe load 事件