@alipay/ams-checkout 0.0.1766976687-dev.0 → 0.0.1767873844-dev.0

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,4 +1,4 @@
1
- import { AddressMountOptions, EventDataMap, EVENTNAME, ICommonApiResponse, IElementOptions, IPaymentApiResponse, LinkAuthMountOptions, PaymentMountOptions, SubmitFuncParams } from '../type';
1
+ import { AddressMountOptions, ICommonApiResponse, IElementOptions, IPaymentApiResponse, LinkAuthMountOptions, PaymentMountOptions } from '../type';
2
2
  declare class ElementController {
3
3
  private options;
4
4
  private elementContainer;
@@ -33,7 +33,7 @@ declare class ElementController {
33
33
  validateFields(): Promise<{
34
34
  isValid: boolean;
35
35
  }>;
36
- submitPayment(submitParams: SubmitFuncParams): Promise<IPaymentApiResponse>;
36
+ submitPayment(): Promise<IPaymentApiResponse>;
37
37
  private changeLoading;
38
38
  private addEventListener;
39
39
  private sendRequestAndWaitWebLaunch;
@@ -44,7 +44,5 @@ declare class ElementController {
44
44
  private destroyHandle;
45
45
  destroy(): void;
46
46
  private setControllerStatusOrView;
47
- on<T extends EVENTNAME>(event: T, callback: (data: EventDataMap[T]) => void): void;
48
- private isEventAllowed;
49
47
  }
50
48
  export default ElementController;
@@ -23,8 +23,6 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
23
23
  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; }
24
24
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
25
25
  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); }
26
- import { ServiceProvider } from "../../../../foundation/service";
27
- import { ELEMENT_SPM_MAP } from "../../../../util/spm-map";
28
26
  import { cleanMockup, removeRetentionPopup } from "../../../../component/component.popup.style";
29
27
  import { destroyModal } from "../../../../component/popupWindow.style";
30
28
  import { ERRORMESSAGE, EVENT, PROMISE_CALLBACK_CODE } from "../../../../constant";
@@ -34,15 +32,16 @@ import PaymentProcessor from "../../../../core/component/element/elementProcesso
34
32
  import { IElementStatus } from "../../../../foundation";
35
33
  import { AntomSDKCore } from "../../../../foundation/core";
36
34
  import { ElementProcessor } from "../../../../foundation/product-processor/element";
35
+ import { ServiceProvider } from "../../../../foundation/service";
36
+ import { convertPaymentSession } from "../../../../foundation/utils/payment_context_utils";
37
37
  import { ProductSceneEnum } from "../../../../types";
38
+ import { ELEMENT_SPM_MAP } from "../../../../util/spm-map";
38
39
  import { ElementContainerService } from "../elementContainerService"; // 引入 ElementContainerService
39
40
  import { IContainerStatus } from "../elementContainerService/containerService";
40
41
  import { EventCenter as ElementEventCenter } from "../EventCenter/index";
41
42
  import { oneAccountUpdate, sdkActionUpdate } from "../mock";
42
43
  import { ElementPaymentEvent, ElementPaymentMethod, ElementType, EventCallbackCode, EXPOSURE_API_EVENT, MountElementType, PaymentStatus } from "../type";
43
- import { checkCanMount, checkCanUpdate, handleRedirect, isLoadErrorPage, safeParse, safeStringify, showToast } from "../util";
44
- import { convertPaymentSession } from "../../../../foundation/utils/payment_context_utils";
45
- import { productEventScenarios, ProductScene } from "../config";
44
+ import { checkCanMount, checkCanUpdate, handleRedirect, isLoadErrorPage, safeStringify, showToast } from "../util";
46
45
  var TIMEOUT_DURATION = 10000;
47
46
  var ElementController = /*#__PURE__*/function () {
48
47
  function ElementController(options) {
@@ -90,13 +89,16 @@ var ElementController = /*#__PURE__*/function () {
90
89
  this.options = options;
91
90
  var _options = options;
92
91
  this.onStatusChangeCallback = _options === null || _options === void 0 ? void 0 : _options.onStatusChangeCallback;
92
+ // 初始化 this.elementContainer 的 status 为 INITING
93
93
  this.elementContainer = new AntomSDKCore();
94
94
  this.elementContainer.registerProcessor(ProductSceneEnum.ELEMENT_PAYMENT, '', new ElementProcessor());
95
+ // 初始化实例 id,监听 onRedirect 事件
95
96
  this.elementContainer.init(this.options, ProductSceneEnum.ELEMENT_PAYMENT);
96
97
  this.initService();
97
98
  this.elementContainerService = new ElementContainerService({
98
99
  instanceId: this.elementContainer.getInstanceId()
99
100
  });
101
+ // status 设置为 READY
100
102
  this.setControllerStatusOrView(IElementStatus.READY);
101
103
  this.elementEventCenter = new ElementEventCenter({
102
104
  logger: this.elementContainer.getServiceProvider().getService('Log')
@@ -206,6 +208,7 @@ var ElementController = /*#__PURE__*/function () {
206
208
  key: "initializeAndMountProcessor",
207
209
  value: function initializeAndMountProcessor(type, selector, options) {
208
210
  this.initElementProcessors(type);
211
+ // 创建 iframe,拉起应用页面,同时监听全局的数据更新和获取事件
209
212
  this.elementContainerService.mount({
210
213
  type: type,
211
214
  selector: selector,
@@ -242,6 +245,7 @@ var ElementController = /*#__PURE__*/function () {
242
245
  key: "mount",
243
246
  value: function mount(renderOptions, sdkSelector) {
244
247
  var _this2 = this;
248
+ // 此处的 id 是 sessionData && 分割的前3位
245
249
  var _convertPaymentSessio = convertPaymentSession(this.options.sessionData),
246
250
  sessionData = _convertPaymentSessio.id;
247
251
  var startEventId = this.elementEventCenter.registerEvent(EXPOSURE_API_EVENT.MOUNT, sessionData);
@@ -265,6 +269,7 @@ var ElementController = /*#__PURE__*/function () {
265
269
  return;
266
270
  }
267
271
  _this2.clearAndSetInitTimeout(readyCallback);
272
+ // 回调 loading 的 onStartLoading
268
273
  _this2.changeLoading(true);
269
274
  try {
270
275
  var startBizFlowData = {
@@ -273,10 +278,14 @@ var ElementController = /*#__PURE__*/function () {
273
278
  appendAliasContainerId: true
274
279
  })
275
280
  };
281
+ // status 设置为 IN_BIZ_FLOW
276
282
  _this2.setControllerStatusOrView(IElementStatus.IN_BIZ_FLOW);
277
283
  _this2.elementContainer.startBizFlow(startBizFlowData);
284
+ // 创建 iframe 加载应用页面
278
285
  _this2.initializeAndMountProcessor(renderOptions.type, sdkSelector, renderOptions);
286
+ // 监听应用页面 onLaunch 事件,请求 sdkAction.query 接口的数据,请求完成后处理数据异常情况或发送 renderComponent 事件及数据给应用层渲染页面内容
279
287
  _this2.sendRequestAndWaitWebLaunch(renderOptions, readyCallback);
288
+ // 监听事件
280
289
  _this2.addEventListener(readyCallback);
281
290
  _this2.serviceMap.EventCenter.addIFrame(_this2.elementContainerService.getContainerService(renderOptions.type).getContainerService().getWebApp());
282
291
  } catch (error) {
@@ -338,7 +347,7 @@ var ElementController = /*#__PURE__*/function () {
338
347
  }, {
339
348
  key: "submitPayment",
340
349
  value: function () {
341
- var _submitPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(submitParams) {
350
+ var _submitPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
342
351
  var _this3 = this;
343
352
  var startEventId, res, logParams, recordResult, _recordResult, _recordResult2, _recordResult3, _recordResult4, _recordResult5, _logParams;
344
353
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
@@ -370,7 +379,7 @@ var ElementController = /*#__PURE__*/function () {
370
379
  _context4.next = 11;
371
380
  return new Promise( /*#__PURE__*/function () {
372
381
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(resolve) {
373
- var that, recordResultCallback, params, processStep, _submitParams$handleA, _yield$_this3$onValid2, _data, errorString, errorResult;
382
+ var that, recordResultCallback, params, processStep, _yield$_this3$onValid2, data, errorString, errorResult;
374
383
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
375
384
  while (1) switch (_context3.prev = _context3.next) {
376
385
  case 0:
@@ -423,7 +432,7 @@ var ElementController = /*#__PURE__*/function () {
423
432
  }
424
433
  }, _callee2);
425
434
  }));
426
- return function processStep(_x3, _x4) {
435
+ return function processStep(_x2, _x3) {
427
436
  return _ref4.apply(this, arguments);
428
437
  };
429
438
  }(); // 按顺序处理步骤
@@ -446,25 +455,23 @@ var ElementController = /*#__PURE__*/function () {
446
455
  return _context3.abrupt("return");
447
456
  case 14:
448
457
  if (!_this3.elementProcessors[ElementType.payment]) {
449
- _context3.next = 23;
458
+ _context3.next = 21;
450
459
  break;
451
460
  }
452
- params.handleAction = (_submitParams$handleA = submitParams === null || submitParams === void 0 ? void 0 : submitParams.handleAction) !== null && _submitParams$handleA !== void 0 ? _submitParams$handleA : true;
453
- params.shipping = submitParams === null || submitParams === void 0 ? void 0 : submitParams.shippingInfo;
454
- _context3.next = 19;
461
+ _context3.next = 17;
455
462
  return _this3.onValidateAndSubmitPay(_this3.elementProcessors[ElementType.payment].eventCenter, ElementPaymentMethod.PAYMENT_ELEMENT, params);
456
- case 19:
463
+ case 17:
457
464
  _yield$_this3$onValid2 = _context3.sent;
458
- _data = _yield$_this3$onValid2.data;
465
+ data = _yield$_this3$onValid2.data;
459
466
  // TODO 先快速修复类型, 这里结构和标准返回不一致 @马杰
460
467
  // TODO checkout 返回的错误未包含 status 和 message @马杰 @薛浩
461
- recordResult = _data;
468
+ recordResult = data;
462
469
  recordResultCallback(recordResult);
463
- case 23:
464
- _context3.next = 32;
470
+ case 21:
471
+ _context3.next = 30;
465
472
  break;
466
- case 25:
467
- _context3.prev = 25;
473
+ case 23:
474
+ _context3.prev = 23;
468
475
  _context3.t0 = _context3["catch"](2);
469
476
  // 修复error为{}空对象的问题,上报stack&message
470
477
  errorString = JSON.stringify(_context3.t0, Object.getOwnPropertyNames(_context3.t0));
@@ -481,13 +488,13 @@ var ElementController = /*#__PURE__*/function () {
481
488
  });
482
489
  recordResult = errorResult;
483
490
  recordResultCallback(errorResult);
484
- case 32:
491
+ case 30:
485
492
  case "end":
486
493
  return _context3.stop();
487
494
  }
488
- }, _callee3, null, [[2, 25]]);
495
+ }, _callee3, null, [[2, 23]]);
489
496
  }));
490
- return function (_x2) {
497
+ return function (_x) {
491
498
  return _ref3.apply(this, arguments);
492
499
  };
493
500
  }());
@@ -512,7 +519,7 @@ var ElementController = /*#__PURE__*/function () {
512
519
  }
513
520
  }, _callee4, this, [[8,, 12, 17]]);
514
521
  }));
515
- function submitPayment(_x) {
522
+ function submitPayment() {
516
523
  return _submitPayment.apply(this, arguments);
517
524
  }
518
525
  return submitPayment;
@@ -620,7 +627,10 @@ var ElementController = /*#__PURE__*/function () {
620
627
  return _context5.abrupt("return");
621
628
  case 7:
622
629
  _context5.next = 9;
623
- return Promise.all([containerService.createWebLaunchPromise(), this.elementProcessors[type].obtainData()]);
630
+ return Promise.all([containerService.createWebLaunchPromise(),
631
+ // 监听 onLaunch 事件
632
+ this.elementProcessors[type].obtainData() // 请求 sdkAction.query 的数据,connect 还会请求 account.query
633
+ ]);
624
634
  case 9:
625
635
  _yield$Promise$all = _context5.sent;
626
636
  _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
@@ -629,12 +639,15 @@ var ElementController = /*#__PURE__*/function () {
629
639
  this.serviceMap.Log.logInfo({
630
640
  title: 'sdk_event_webAppOnLaunch'
631
641
  });
642
+ // 应用页面加载完成且接口请求完成,状态设置为 READY
632
643
  containerService === null || containerService === void 0 || containerService.switchContainerStatus(IContainerStatus.READY);
644
+ // 处理接口数据异常情况,直接回调,结束流程
633
645
  errorResult = this.getErrorFromResponse(obtainDataResult);
634
646
  if (errorResult) {
635
- // 仅结束resove,传出回调码
647
+ // 仅结束resolve,传出回调码
636
648
  readyCallback(errorResult);
637
649
  }
650
+ // 页面加载和数据状态 READY 后,SDK 向应用层发送 renderComponent 事件,传递应用层渲染必须的数据
638
651
  if (this.areAllContainersReady()) {
639
652
  this.elementContainerService.getContainerServices().forEach(function (_, key) {
640
653
  _this5.sendReady(key, options);
@@ -657,7 +670,7 @@ var ElementController = /*#__PURE__*/function () {
657
670
  }
658
671
  }, _callee5, this, [[1, 20]]);
659
672
  }));
660
- function sendRequestAndWaitWebLaunch(_x5, _x6) {
673
+ function sendRequestAndWaitWebLaunch(_x4, _x5) {
661
674
  return _sendRequestAndWaitWebLaunch.apply(this, arguments);
662
675
  }
663
676
  return sendRequestAndWaitWebLaunch;
@@ -790,7 +803,7 @@ var ElementController = /*#__PURE__*/function () {
790
803
  }
791
804
  }, _callee6);
792
805
  }));
793
- return function (_x8) {
806
+ return function (_x7) {
794
807
  return _ref5.apply(this, arguments);
795
808
  };
796
809
  }()));
@@ -800,7 +813,7 @@ var ElementController = /*#__PURE__*/function () {
800
813
  }
801
814
  }, _callee7);
802
815
  }));
803
- function updatePayment(_x7) {
816
+ function updatePayment(_x6) {
804
817
  return _updatePayment.apply(this, arguments);
805
818
  }
806
819
  return updatePayment;
@@ -837,30 +850,6 @@ var ElementController = /*#__PURE__*/function () {
837
850
  (_this$onStatusChangeC = this.onStatusChangeCallback) === null || _this$onStatusChangeC === void 0 || _this$onStatusChangeC.call(this, "\u72B6\u6001\u7531 ".concat(_status, " \u53D8\u66F4\u4E3A ").concat(status));
838
851
  this.elementContainer.setStatus(status);
839
852
  }
840
- }, {
841
- key: "on",
842
- value: function on(event, callback) {
843
- if (!this.isEventAllowed(event)) {
844
- return console.error("Event \"".concat(event, "\" is not allowed."));
845
- }
846
- this.serviceMap.EventCenter.listen(event, function (data) {
847
- callback === null || callback === void 0 || callback(data);
848
- });
849
- }
850
- }, {
851
- key: "isEventAllowed",
852
- value: function isEventAllowed(event) {
853
- var _safeParse, _this$elementContaine;
854
- // 获取当前场景
855
- var isExpressCheckout = (_safeParse = safeParse((_this$elementContaine = this.elementContainer.getPaymentContext()) === null || _this$elementContaine === void 0 || (_this$elementContaine = _this$elementContaine.paymentSessionObj) === null || _this$elementContaine === void 0 ? void 0 : _this$elementContaine.extendInfo)) === null || _safeParse === void 0 ? void 0 : _safeParse.expressCheckout;
856
- var productScene = isExpressCheckout ? ProductScene.EXPRESS_CHECKOUT : ProductScene.ELEMENT_PAYMENT;
857
- // 查找对应的产品场景
858
- var scenario = productEventScenarios.find(function (s) {
859
- return s.eventName === productScene;
860
- });
861
- // 检查场景存在且事件名称在支持的事件列表中
862
- return scenario !== undefined && scenario.supportedEvents.includes(event);
863
- }
864
853
  }]);
865
854
  return ElementController;
866
855
  }();
@@ -1,4 +1,4 @@
1
- import { EventDataMap, EVENTNAME, IElementOptions, PaymentMountOptions, SubmitFuncParams } from './type';
1
+ import { IElementOptions, PaymentMountOptions } from './type';
2
2
  export declare class ElementComponent {
3
3
  private options;
4
4
  private controller;
@@ -8,7 +8,6 @@ export declare class ElementComponent {
8
8
  validateFields(): Promise<{
9
9
  isValid: boolean;
10
10
  }>;
11
- submitPayment(params: SubmitFuncParams): Promise<import("./type").IPaymentApiResponse>;
11
+ submitPayment(): Promise<import("./type").IPaymentApiResponse>;
12
12
  destroy(): void;
13
- on<T extends EVENTNAME>(event: T, callback: (data: EventDataMap[T]) => void): void;
14
13
  }
@@ -62,19 +62,14 @@ export var ElementComponent = /*#__PURE__*/function () {
62
62
  }
63
63
  }, {
64
64
  key: "submitPayment",
65
- value: function submitPayment(params) {
66
- return this.controller.submitPayment(params);
65
+ value: function submitPayment() {
66
+ return this.controller.submitPayment();
67
67
  }
68
68
  }, {
69
69
  key: "destroy",
70
70
  value: function destroy() {
71
71
  this.controller.destroy();
72
72
  }
73
- }, {
74
- key: "on",
75
- value: function on(event, callback) {
76
- this.controller.on(event, callback);
77
- }
78
73
  }]);
79
74
  return ElementComponent;
80
75
  }();
@@ -261,21 +261,9 @@ export interface AddressSubmitData {
261
261
  shippingId: string;
262
262
  actionFlag?: 'I' | 'U' | 'D';
263
263
  }
264
- export interface HandleAction {
265
- threeD?: boolean;
266
- callApp?: boolean;
267
- pageRedirect?: boolean;
268
- qrCode?: boolean;
269
- }
270
- export type HandleActionType = boolean | HandleAction;
271
- export interface SubmitFuncParams {
272
- shippingInfo?: AddressSubmitData;
273
- handleAction?: HandleActionType;
274
- }
275
264
  export interface SubmitServiceParams extends PaymentSubmitData {
276
265
  accountInfo: AuthSubmitData['accountInfo'];
277
266
  shipping?: AddressSubmitData;
278
- handleAction?: HandleActionType;
279
267
  }
280
268
  interface SubmitResultActionForm extends ActionForm {
281
269
  paymentCodeExpireTime: string;
@@ -455,30 +443,4 @@ export declare enum EXPOSURE_API_EVENT {
455
443
  VALIDATAFIELDS = "validateFields",
456
444
  UPDATEPAYMENT = "updatePayment"
457
445
  }
458
- export declare enum EVENTNAME {
459
- PAYMENTMETHODCHANGED = "paymentMethodChanged",
460
- VALUESCHANGED = "valuesChanged"
461
- }
462
- interface PaymentMethodChangedData {
463
- type: string;
464
- name: string;
465
- }
466
- interface ValuesChangedData {
467
- region: string;
468
- state: string;
469
- city: string;
470
- address1: string;
471
- address2: string;
472
- zipCode: string;
473
- phoneNo: string;
474
- name: {
475
- firstName: string;
476
- lastName: string;
477
- middleName: string;
478
- };
479
- }
480
- export interface EventDataMap {
481
- [EVENTNAME.PAYMENTMETHODCHANGED]: PaymentMethodChangedData;
482
- [EVENTNAME.VALUESCHANGED]: ValuesChangedData;
483
- }
484
446
  export {};
@@ -147,11 +147,4 @@ export var EXPOSURE_API_EVENT = /*#__PURE__*/function (EXPOSURE_API_EVENT) {
147
147
  EXPOSURE_API_EVENT["VALIDATAFIELDS"] = "validateFields";
148
148
  EXPOSURE_API_EVENT["UPDATEPAYMENT"] = "updatePayment";
149
149
  return EXPOSURE_API_EVENT;
150
- }({});
151
- export var EVENTNAME = /*#__PURE__*/function (EVENTNAME) {
152
- EVENTNAME["PAYMENTMETHODCHANGED"] = "paymentMethodChanged";
153
- EVENTNAME["VALUESCHANGED"] = "valuesChanged";
154
- return EVENTNAME;
155
- }({});
156
-
157
- // 支付方式改变的回调函数的数据结构
150
+ }({});
@@ -83,4 +83,3 @@ export declare const isElementPC: () => boolean;
83
83
  */
84
84
  export declare const isLoadErrorPage: (params: CashierSdkActionQueryResult) => boolean;
85
85
  export declare const safeStringify: (payload: any, defaultValue?: string) => string;
86
- export declare const safeParse: (payload: any, defaultValue?: Record<string, any>) => Record<string, any>;
@@ -535,14 +535,4 @@ export var safeStringify = function safeStringify(payload) {
535
535
  console.error('JSON.stringify failed:', e);
536
536
  return defaultValue;
537
537
  }
538
- };
539
- export var safeParse = function safeParse(payload) {
540
- var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
541
- if (!payload) return defaultValue;
542
- try {
543
- return JSON.parse(payload) || defaultValue;
544
- } catch (e) {
545
- console.error('JSON.parse failed:', e);
546
- return defaultValue;
547
- }
548
538
  };
@@ -1,5 +1,5 @@
1
- import { PaymentContext, SDKMetaData, Service } from '../../index';
2
1
  import { IoptionsParams } from '../../../types';
2
+ import { PaymentContext, SDKMetaData, Service } from '../../index';
3
3
  import { LogExtra, LogMetaData, LogPayload } from './types';
4
4
  /**
5
5
  * @author 谦彧 <zhangmian.zm@alipay.com>
@@ -8,10 +8,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
8
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
9
  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); }
10
10
  import { EnvironmentEnum } from "../../../types";
11
- import { LogComplianceProcessor } from "./processor";
12
11
  import { isPC } from "../../../util";
13
- import { getStorageString, setStorageString } from "../../../util/storage";
14
12
  import { SPM_MAP } from "../../../util/spm-map";
13
+ import { getStorageString, setStorageString } from "../../../util/storage";
14
+ import { LogComplianceProcessor } from "./processor";
15
15
 
16
16
  /**
17
17
  * @author 谦彧 <zhangmian.zm@alipay.com>
@@ -185,14 +185,14 @@ export var LogService = /*#__PURE__*/function () {
185
185
  value: function loadScript(url, callback) {
186
186
  var _this3 = this;
187
187
  /*
188
- * 如果宿主环境存在AMD加载器,通过直接创建script标签的方式加载会造成宿主环境报错:
189
- * Message: Mismatched anonymous define() module
190
- * 原因是直接通过script标签加载的模块如果没有定义模块名,会被AMD加载器认为是匿名模块,
191
- * 而宿主环境中已经存在匿名模块,导致报错。
192
- *
193
- * TODO: 所有通过window.iTracker调用的方法都需要判断
194
- * 是否是AMD环境,如果是,需要通过require加载获取iTracker实例
195
- * */
188
+ * 如果宿主环境存在AMD加载器,通过直接创建script标签的方式加载会造成宿主环境报错:
189
+ * Message: Mismatched anonymous define() module
190
+ * 原因是直接通过script标签加载的模块如果没有定义模块名,会被AMD加载器认为是匿名模块,
191
+ * 而宿主环境中已经存在匿名模块,导致报错。
192
+ *
193
+ * TODO: 所有通过window.iTracker调用的方法都需要判断
194
+ * 是否是AMD环境,如果是,需要通过require加载获取iTracker实例
195
+ * */
196
196
  if (typeof window.define === 'function' && window.define.amd && typeof window.require === 'function') {
197
197
  var moduleId = 'antom_iTracker';
198
198
  try {
@@ -227,7 +227,12 @@ export var LogService = /*#__PURE__*/function () {
227
227
  script.onerror = function () {
228
228
  console.error("unable to load Antom script: ".concat(url));
229
229
  };
230
- document.body.appendChild(script);
230
+ // CDN 方式接入 sdk,执行时机可能在 body 创建之前
231
+ if (document.body) {
232
+ document.body.appendChild(script);
233
+ } else if (document.head) {
234
+ document.head.appendChild(script);
235
+ }
231
236
  }
232
237
  }, {
233
238
  key: "initTracker",
@@ -220,7 +220,12 @@ export var Logger = /*#__PURE__*/function () {
220
220
  script.onerror = function () {
221
221
  console.error("unable to load Antom script: ".concat(url));
222
222
  };
223
- document.body.appendChild(script);
223
+ // CDN 方式接入 sdk,执行时机可能在 body 创建之前
224
+ if (document.body) {
225
+ document.body.appendChild(script);
226
+ } else if (document.head) {
227
+ document.head.appendChild(script);
228
+ }
224
229
  }
225
230
  }, {
226
231
  key: "initTracker",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alipay/ams-checkout",
3
- "version": "0.0.1766976687-dev.0",
3
+ "version": "0.0.1767873844-dev.0",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "main": "esm/index.js",
@@ -1,10 +0,0 @@
1
- export declare enum ProductScene {
2
- EXPRESS_CHECKOUT = "EXPRESS_CHECKOUT",
3
- ELEMENT_PAYMENT = "ELEMENT_PAYMENT"
4
- }
5
- interface EventScenario {
6
- eventName: ProductScene;
7
- supportedEvents: string[];
8
- }
9
- export declare const productEventScenarios: EventScenario[];
10
- export {};
@@ -1,17 +0,0 @@
1
- // 定义产品场景的枚举
2
- export var ProductScene = /*#__PURE__*/function (ProductScene) {
3
- ProductScene["EXPRESS_CHECKOUT"] = "EXPRESS_CHECKOUT";
4
- ProductScene["ELEMENT_PAYMENT"] = "ELEMENT_PAYMENT";
5
- return ProductScene;
6
- }({});
7
-
8
- // 定义一个事件场景的接口
9
-
10
- // 存储产品场景及支持的事件名
11
- export var productEventScenarios = [{
12
- eventName: ProductScene.EXPRESS_CHECKOUT,
13
- supportedEvents: [] // 没有支持的事件
14
- }, {
15
- eventName: ProductScene.ELEMENT_PAYMENT,
16
- supportedEvents: ['paymentMethodChanged', 'valuesChanged'] // 支持的事件
17
- }];