@alipay/ams-checkout 0.0.1730107332-dev.25 → 0.0.1730107332-dev.26

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.
Files changed (96) hide show
  1. package/dist/umd/ams-checkout.min.js +1 -1
  2. package/esm/component/channel.js +18 -10
  3. package/esm/component/component.inline.style.js +1 -1
  4. package/esm/config/index.d.ts +7 -7
  5. package/esm/config/index.js +7 -7
  6. package/esm/constant/index.d.ts +3 -0
  7. package/esm/constant/index.js +3 -0
  8. package/esm/core/bus/ability/callback.d.ts +9 -0
  9. package/esm/core/bus/ability/callback.js +55 -0
  10. package/esm/core/bus/ability/security.d.ts +10 -0
  11. package/esm/core/bus/ability/security.js +104 -0
  12. package/esm/core/bus/ability/tracker.d.ts +9 -0
  13. package/esm/core/bus/ability/tracker.js +77 -0
  14. package/esm/core/bus/index.d.ts +125 -0
  15. package/esm/core/bus/index.js +366 -0
  16. package/esm/core/bus/interface.d.ts +36 -0
  17. package/esm/core/bus/interface.js +40 -0
  18. package/esm/core/component/address.d.ts +8 -0
  19. package/esm/core/component/address.js +72 -0
  20. package/esm/core/component/appPreloadProcessing.d.ts +1 -0
  21. package/esm/core/component/appPreloadProcessing.js +89 -0
  22. package/esm/core/component/ckp/index.d.ts +27 -0
  23. package/esm/core/component/ckp/index.js +166 -0
  24. package/esm/core/component/index.d.ts +51 -0
  25. package/esm/core/component/index.js +531 -0
  26. package/esm/core/drop-in/index.d.ts +22 -0
  27. package/esm/core/drop-in/index.js +104 -0
  28. package/esm/core/instance/index.d.ts +89 -0
  29. package/esm/core/instance/index.js +499 -0
  30. package/esm/foundation/core/index.d.ts +2 -2
  31. package/esm/foundation/index.d.ts +5 -5
  32. package/esm/foundation/product-processor/easysafepay/deps.d.ts +2 -2
  33. package/esm/foundation/product-processor/easysafepay/deps.js +1 -1
  34. package/esm/foundation/product-processor/easysafepay/index.d.ts +2 -2
  35. package/esm/foundation/service/api-bus/index.d.ts +2 -2
  36. package/esm/foundation/service/container/index.d.ts +2 -2
  37. package/esm/foundation/service/event-center.d.ts +4 -4
  38. package/esm/foundation/service/event-center.js +10 -10
  39. package/esm/foundation/service/global-data/index.d.ts +2 -2
  40. package/esm/foundation/service/index.d.ts +2 -2
  41. package/esm/foundation/service/log/index.d.ts +2 -2
  42. package/esm/foundation/service/requester/deps.d.ts +1 -1
  43. package/esm/foundation/service/requester/requester.d.ts +2 -2
  44. package/esm/foundation/service/security/index.d.ts +2 -2
  45. package/esm/foundation/service/security/index.js +20 -4
  46. package/esm/foundation/utils/redirect_utils.d.ts +5 -0
  47. package/esm/foundation/utils/redirect_utils.js +135 -1
  48. package/esm/foundation/utils/web_app_url_utils.js +1 -1
  49. package/esm/index.d.ts +27 -2
  50. package/esm/index.js +131 -6
  51. package/esm/plugin/applepay/component.d.ts +50 -0
  52. package/esm/plugin/applepay/component.js +339 -0
  53. package/esm/plugin/applepay/index.d.ts +17 -0
  54. package/esm/plugin/applepay/index.js +117 -0
  55. package/esm/plugin/applepay/interface.d.ts +161 -0
  56. package/esm/plugin/applepay/interface.js +69 -0
  57. package/esm/plugin/applepay/service.d.ts +54 -0
  58. package/esm/plugin/applepay/service.js +289 -0
  59. package/esm/plugin/component/cashierApp.d.ts +34 -0
  60. package/esm/plugin/component/cashierApp.js +237 -0
  61. package/esm/plugin/component/channel.d.ts +21 -0
  62. package/esm/plugin/component/channel.js +89 -0
  63. package/esm/plugin/component/component.inline.style.d.ts +10 -0
  64. package/esm/plugin/component/component.inline.style.js +119 -0
  65. package/esm/plugin/component/component.popup.style.d.ts +16 -0
  66. package/esm/plugin/component/component.popup.style.js +174 -0
  67. package/esm/plugin/component/index.d.ts +126 -0
  68. package/esm/plugin/component/index.js +1839 -0
  69. package/esm/plugin/component/popupWindow.style.d.ts +11 -0
  70. package/esm/plugin/component/popupWindow.style.js +121 -0
  71. package/esm/plugin/const.d.ts +2 -0
  72. package/esm/plugin/const.js +33 -0
  73. package/esm/plugin/drop-in/index.d.ts +71 -0
  74. package/esm/plugin/drop-in/index.js +324 -0
  75. package/esm/plugin/payment-element/utils.d.ts +2 -0
  76. package/esm/plugin/payment-element/utils.js +6 -0
  77. package/esm/plugin/paypal/index.d.ts +20 -0
  78. package/esm/plugin/paypal/index.js +390 -0
  79. package/esm/plugin/type.d.ts +34 -0
  80. package/esm/plugin/type.js +1 -0
  81. package/esm/plugin/utils.d.ts +6 -0
  82. package/esm/plugin/utils.js +21 -0
  83. package/esm/types/index.d.ts +28 -9
  84. package/esm/types/index.js +5 -1
  85. package/esm/util/createIframeNode.d.ts +6 -0
  86. package/esm/util/createIframeNode.js +48 -0
  87. package/esm/util/getBackScheme.d.ts +2 -2
  88. package/esm/util/getBackScheme.js +2 -2
  89. package/esm/util/index.d.ts +11 -1
  90. package/esm/util/index.js +84 -3
  91. package/esm/util/intl-callapp/es/index.js +0 -1
  92. package/esm/util/security.d.ts +33 -0
  93. package/esm/util/security.js +182 -0
  94. package/package.json +2 -2
  95. package/esm/foundation/types/index.d.ts +0 -4
  96. package/esm/foundation/types/index.js +0 -4
@@ -0,0 +1,27 @@
1
+ import { IcreateComponent, IoptionsParams } from '../../../types';
2
+ import { Logger } from '../../../util/logger';
3
+ type LOCAL_URL = string;
4
+ export type CKPEmbeddedAppEnv = 'dev' | 'sit' | 'pre' | 'prod';
5
+ export type CKPEmbeddedEventType = 'SDK_PAYMENT_SUCCESSFUL' | 'SDK_PAYMENT_FAIL' | 'SDK_PAYMENT_CANCEL' | 'SDK_PAYMENT_CLICK_BACK_TO_MERCHANT';
6
+ export declare const getCKPPageAddress: (env: IoptionsParams['environment'] | LOCAL_URL) => string;
7
+ export declare class AMSCheckoutPage {
8
+ logger: Logger;
9
+ private _instanceId;
10
+ private originOptions;
11
+ private readonly APP_IFRAME_ID;
12
+ private eventListener?;
13
+ constructor(options: Pick<IoptionsParams, 'environment' | 'locale' | 'onEventCallback'>);
14
+ private generateIframeSrc;
15
+ private eventListenerWrapper;
16
+ private addListener;
17
+ private removeListener;
18
+ /**
19
+ * 挂载组件
20
+ */
21
+ mountComponent(params: Pick<IcreateComponent, 'sessionData'>, selector: string): Promise<void>;
22
+ /**
23
+ * 卸载组件
24
+ */
25
+ unmount(): void;
26
+ }
27
+ export {};
@@ -0,0 +1,166 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
4
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
+ 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; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ 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); }
8
+ import { v4 as uuid } from 'uuid';
9
+ import { EnvironmentEnum } from "../../../types";
10
+ import { queryParse } from "../../../util";
11
+ import { LogConfig, Logger } from "../../../util/logger";
12
+ var CKP_PAYMENT_PAGE_HOST = {
13
+ DEV: 'https://dev.page.alipay.net',
14
+ TEST: 'https://test.page.alipay.net',
15
+ PRE: 'https://pre.ac.alipay.com',
16
+ PROD: 'https://ac.alipay.com'
17
+ };
18
+
19
+ // for local development
20
+
21
+ var CKP_PAGE_ADDRESS = '/page/antom-web-checkout-v2/checkout-page/pages/payment/index.html';
22
+ export var getCKPPageAddress = function getCKPPageAddress(env) {
23
+ switch (env) {
24
+ case 'dev':
25
+ return "".concat(CKP_PAYMENT_PAGE_HOST.DEV).concat(CKP_PAGE_ADDRESS);
26
+ case 'sit':
27
+ return "".concat(CKP_PAYMENT_PAGE_HOST.TEST).concat(CKP_PAGE_ADDRESS);
28
+ case 'pre':
29
+ return "".concat(CKP_PAYMENT_PAGE_HOST.PRE).concat(CKP_PAGE_ADDRESS);
30
+ case 'prod':
31
+ case 'sandbox':
32
+ case 'light_sandbox':
33
+ return "".concat(CKP_PAYMENT_PAGE_HOST.PROD).concat(CKP_PAGE_ADDRESS);
34
+ default:
35
+ // for local development, e.g. http://localhost:5173/checkout-page/src/pages/payment/index.html
36
+ return env;
37
+ }
38
+ };
39
+ export var AMSCheckoutPage = /*#__PURE__*/function () {
40
+ function AMSCheckoutPage(options) {
41
+ var _this = this;
42
+ _classCallCheck(this, AMSCheckoutPage);
43
+ _defineProperty(this, "logger", void 0);
44
+ _defineProperty(this, "_instanceId", void 0);
45
+ _defineProperty(this, "originOptions", void 0);
46
+ _defineProperty(this, "APP_IFRAME_ID", 'antom-checkout-page-sub-page-iframe');
47
+ _defineProperty(this, "eventListener", void 0);
48
+ _defineProperty(this, "generateIframeSrc", function (sessionData) {
49
+ var env = _this.originOptions.environment || 'prod';
50
+ var session = sessionData || '';
51
+ var lang = _this.originOptions.locale || 'en_US';
52
+ var ckpPageAddress = getCKPPageAddress(env);
53
+ console.log('[antom-web-sdk] <antom-checkout-page> generateIframeSrc', _this.originOptions, env, session, lang, ckpPageAddress);
54
+
55
+ // 先获取去除的 query 参数的 url
56
+ var url = ckpPageAddress.split('?')[0];
57
+ var queryObj = queryParse(ckpPageAddress);
58
+ queryObj.sessionData = session;
59
+ queryObj.lang = lang;
60
+ queryObj.mode = 'embed';
61
+ if (env === 'sandbox') {
62
+ queryObj.shadow = 'true';
63
+ }
64
+ Object.keys(queryObj).forEach(function (key) {
65
+ url += "".concat(url.includes('?') ? '&' : '?').concat(key, "=").concat(encodeURIComponent(queryObj[key]));
66
+ });
67
+ return url;
68
+ });
69
+ _defineProperty(this, "eventListenerWrapper", function (event) {
70
+ var _ref = JSON.parse(event.data) || {},
71
+ code = _ref.code,
72
+ message = _ref.message,
73
+ result = _ref.result;
74
+ if (code && code.startsWith('SDK_PAYMENT')) {
75
+ var _this$eventListener;
76
+ console.log('[antom-web-sdk] <antom-checkout-page> eventListenerWrapper', event, message, result);
77
+ (_this$eventListener = _this.eventListener) === null || _this$eventListener === void 0 || _this$eventListener.call(_this, {
78
+ code: code,
79
+ message: message,
80
+ result: result
81
+ });
82
+ }
83
+ });
84
+ _defineProperty(this, "addListener", function () {
85
+ window.addEventListener('message', _this.eventListenerWrapper);
86
+ });
87
+ _defineProperty(this, "removeListener", function () {
88
+ window.removeEventListener('message', _this.eventListenerWrapper);
89
+ });
90
+ options.environment = options.environment || EnvironmentEnum.prod;
91
+ this._instanceId = uuid();
92
+ this.originOptions = options;
93
+ this.eventListener = options.onEventCallback;
94
+ this.logger = new Logger(LogConfig, ![EnvironmentEnum.prod, EnvironmentEnum.sandbox].includes(options === null || options === void 0 ? void 0 : options.environment));
95
+ Logger.setInstance(this.logger);
96
+ this.logger.setMedta({
97
+ instanceId: this._instanceId
98
+ });
99
+ this.logger.initTracker();
100
+ this.logger.setComponentStartTime(Date.now());
101
+ this.logger.setTrackId(this._instanceId);
102
+ this.logger.logInfo({
103
+ title: 'NEW_AMSSDK_BY_MECHANT',
104
+ msg: "".concat(options === null || options === void 0 ? void 0 : options.environment, "_").concat(options === null || options === void 0 ? void 0 : options.locale)
105
+ }).send();
106
+ }
107
+ _createClass(AMSCheckoutPage, [{
108
+ key: "mountComponent",
109
+ value:
110
+ /**
111
+ * 挂载组件
112
+ */
113
+ function mountComponent(params, selector) {
114
+ if (params.sessionData === undefined || params.sessionData === '' || typeof params.sessionData !== 'string') {
115
+ this.logger.logError({
116
+ title: 'PARAMS_ERROR_INVALID_SESSION_DATA'
117
+ });
118
+ console.error('[antom-web-sdk] <antom-checkout-page> mountComponent: sessionData is required and must be a string');
119
+ throw new Error('PARAMS_ERROR_INVALID_SESSION_DATA');
120
+ }
121
+ if (document.querySelector(this.APP_IFRAME_ID)) {
122
+ this.logger.logError({
123
+ title: 'PARAMS_ERROR_ALREADY_MOUNTED'
124
+ });
125
+ console.error('[antom-web-sdk] <antom-checkout-page> mountComponent: already mounted, please unmount first');
126
+ throw new Error('PARAMS_ERROR_ALREADY_MOUNTED');
127
+ }
128
+ this.addListener();
129
+ var ckpPageAddress = this.generateIframeSrc(params.sessionData);
130
+ var iframe = document.createElement('iframe');
131
+ iframe.id = this.APP_IFRAME_ID;
132
+ iframe.src = ckpPageAddress;
133
+ iframe.width = '100%';
134
+ iframe.height = '100%';
135
+ iframe.style.border = 'none';
136
+ var wrapper = document.querySelector(selector);
137
+ if (wrapper) {
138
+ wrapper.innerHTML = '';
139
+ wrapper.appendChild(iframe);
140
+ } else {
141
+ this.logger.logError({
142
+ title: 'PARAMS_ERROR_INVALID_SELECTOR'
143
+ });
144
+ console.error('[antom-web-sdk] <antom-checkout-page> mountComponent: invalid selector');
145
+ this.removeListener();
146
+ throw new Error('PARAMS_ERROR_INVALID_SELECTOR');
147
+ }
148
+ return Promise.resolve();
149
+ }
150
+
151
+ /**
152
+ * 卸载组件
153
+ */
154
+ }, {
155
+ key: "unmount",
156
+ value: function unmount() {
157
+ this.removeListener();
158
+ var iframe = document.getElementById(this.APP_IFRAME_ID);
159
+ if (iframe) {
160
+ iframe.remove();
161
+ }
162
+ return;
163
+ }
164
+ }]);
165
+ return AMSCheckoutPage;
166
+ }();
@@ -0,0 +1,51 @@
1
+ import ComponentApp from '../../plugin/component';
2
+ import { ComponentSignEnum, IcreateComponent, IoptionsParams, IPaymentSessionMetaData, Iselector, Isubmit, PaymentMethodTypeEnum, SubPaymentMethodTypeEnum } from '../../types';
3
+ import CoreInstance from '../instance/index';
4
+ export declare const getComponentSign: (params: IPaymentSessionMetaData) => ComponentSignEnum;
5
+ export declare const parseSessionData: (sessionData: string) => [IPaymentSessionMetaData, string];
6
+ export type IAMSComponentOptions = IoptionsParams & {
7
+ appVersion: string;
8
+ };
9
+ export declare class AMSComponent extends CoreInstance {
10
+ _componentApp: ComponentApp;
11
+ channelType: ComponentSignEnum[];
12
+ productSceneVersion: string;
13
+ timer: any;
14
+ constructor(options: IAMSComponentOptions);
15
+ private parameterInitAndCheck;
16
+ private pluginAppendIframe;
17
+ private savePreviousChannel;
18
+ /**
19
+ * 初始化 Bus总线的能力
20
+ */
21
+ private registerBusAbility;
22
+ /**
23
+ * To determine whether the corresponding payment method is available,
24
+ * only the channel described in the document will be called, and it will be returned as available by default
25
+ * @param paymentMethod - described in the document
26
+ * @param subPaymentMethod - described in the document
27
+ * @returns
28
+ */
29
+ canMakePayments(paymentMethod: PaymentMethodTypeEnum, subPaymentMethod?: SubPaymentMethodTypeEnum): Promise<boolean>;
30
+ /**
31
+ * @description Create component application
32
+ * @param params - The data source created by the component, necessary sessionData, optional appearance configuration, and refer to the documentation for other parameters and detailed information.
33
+ */
34
+ createComponent(params: IcreateComponent): Promise<void>;
35
+ private createComponentProcess;
36
+ preloadComponent(channelType: any, productSceneVersion: any): void;
37
+ private clearPreloadIframe;
38
+ /**
39
+ * @description Create and render components in the specified element area
40
+ * @param params - The data source created by the component, necessary sessionData, optional appearance configurations, and refer to the documentation for other parameters and detailed information.
41
+ * @param selector - Necessary element selector ID
42
+ */
43
+ mountComponent(params: IcreateComponent, selector: Iselector): Promise<void>;
44
+ private mountComponentProcess;
45
+ /**
46
+ * @description Execute payment submission process
47
+ * @description - When using your own payment button, you can execute the submit payment process by actively calling this function.
48
+ * @param data - Transfer information in the submission interface according to your requirements (optional)
49
+ */
50
+ submit(data?: Isubmit): Promise<unknown>;
51
+ }