@alipay/ams-checkout 0.0.1730107332-dev.24 → 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.
- package/dist/umd/ams-checkout.min.js +1 -1
- package/esm/component/component.inline.style.js +1 -1
- package/esm/config/index.d.ts +7 -7
- package/esm/config/index.js +7 -7
- package/esm/constant/index.d.ts +3 -0
- package/esm/constant/index.js +3 -0
- package/esm/core/bus/ability/callback.d.ts +9 -0
- package/esm/core/bus/ability/callback.js +55 -0
- package/esm/core/bus/ability/security.d.ts +10 -0
- package/esm/core/bus/ability/security.js +104 -0
- package/esm/core/bus/ability/tracker.d.ts +9 -0
- package/esm/core/bus/ability/tracker.js +77 -0
- package/esm/core/bus/index.d.ts +125 -0
- package/esm/core/bus/index.js +366 -0
- package/esm/core/bus/interface.d.ts +36 -0
- package/esm/core/bus/interface.js +40 -0
- package/esm/core/component/address.d.ts +8 -0
- package/esm/core/component/address.js +72 -0
- package/esm/core/component/appPreloadProcessing.d.ts +1 -0
- package/esm/core/component/appPreloadProcessing.js +89 -0
- package/esm/core/component/ckp/index.d.ts +27 -0
- package/esm/core/component/ckp/index.js +166 -0
- package/esm/core/component/index.d.ts +51 -0
- package/esm/core/component/index.js +531 -0
- package/esm/core/drop-in/index.d.ts +22 -0
- package/esm/core/drop-in/index.js +104 -0
- package/esm/core/instance/index.d.ts +89 -0
- package/esm/core/instance/index.js +499 -0
- package/esm/foundation/core/index.d.ts +2 -2
- package/esm/foundation/index.d.ts +5 -5
- package/esm/foundation/product-processor/easysafepay/deps.d.ts +2 -2
- package/esm/foundation/product-processor/easysafepay/deps.js +1 -1
- package/esm/foundation/product-processor/easysafepay/index.d.ts +2 -2
- package/esm/foundation/service/api-bus/index.d.ts +2 -2
- package/esm/foundation/service/container/index.d.ts +2 -2
- package/esm/foundation/service/event-center.d.ts +4 -4
- package/esm/foundation/service/event-center.js +10 -10
- package/esm/foundation/service/global-data/index.d.ts +2 -2
- package/esm/foundation/service/index.d.ts +2 -2
- package/esm/foundation/service/log/index.d.ts +2 -2
- package/esm/foundation/service/requester/deps.d.ts +1 -1
- package/esm/foundation/service/requester/requester.d.ts +2 -2
- package/esm/foundation/service/security/index.d.ts +2 -2
- package/esm/foundation/utils/redirect_utils.d.ts +5 -0
- package/esm/foundation/utils/redirect_utils.js +135 -1
- package/esm/foundation/utils/web_app_url_utils.js +1 -1
- package/esm/index.d.ts +27 -2
- package/esm/index.js +131 -6
- package/esm/plugin/applepay/component.d.ts +50 -0
- package/esm/plugin/applepay/component.js +339 -0
- package/esm/plugin/applepay/index.d.ts +17 -0
- package/esm/plugin/applepay/index.js +117 -0
- package/esm/plugin/applepay/interface.d.ts +161 -0
- package/esm/plugin/applepay/interface.js +69 -0
- package/esm/plugin/applepay/service.d.ts +54 -0
- package/esm/plugin/applepay/service.js +289 -0
- package/esm/plugin/component/cashierApp.d.ts +34 -0
- package/esm/plugin/component/cashierApp.js +237 -0
- package/esm/plugin/component/channel.d.ts +21 -0
- package/esm/plugin/component/channel.js +89 -0
- package/esm/plugin/component/component.inline.style.d.ts +10 -0
- package/esm/plugin/component/component.inline.style.js +119 -0
- package/esm/plugin/component/component.popup.style.d.ts +16 -0
- package/esm/plugin/component/component.popup.style.js +174 -0
- package/esm/plugin/component/index.d.ts +126 -0
- package/esm/plugin/component/index.js +1839 -0
- package/esm/plugin/component/popupWindow.style.d.ts +11 -0
- package/esm/plugin/component/popupWindow.style.js +121 -0
- package/esm/plugin/const.d.ts +2 -0
- package/esm/plugin/const.js +33 -0
- package/esm/plugin/drop-in/index.d.ts +71 -0
- package/esm/plugin/drop-in/index.js +324 -0
- package/esm/plugin/payment-element/utils.d.ts +2 -0
- package/esm/plugin/payment-element/utils.js +6 -0
- package/esm/plugin/paypal/index.d.ts +20 -0
- package/esm/plugin/paypal/index.js +390 -0
- package/esm/plugin/type.d.ts +34 -0
- package/esm/plugin/type.js +1 -0
- package/esm/plugin/utils.d.ts +6 -0
- package/esm/plugin/utils.js +21 -0
- package/esm/types/index.d.ts +28 -9
- package/esm/types/index.js +5 -1
- package/esm/util/createIframeNode.d.ts +6 -0
- package/esm/util/createIframeNode.js +48 -0
- package/esm/util/getBackScheme.d.ts +2 -2
- package/esm/util/getBackScheme.js +2 -2
- package/esm/util/index.d.ts +11 -1
- package/esm/util/index.js +84 -3
- package/esm/util/intl-callapp/es/index.js +0 -1
- package/esm/util/security.d.ts +33 -0
- package/esm/util/security.js +182 -0
- package/package.json +2 -2
- package/esm/foundation/types/index.d.ts +0 -4
- 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
|
+
}
|