@alipay/ams-checkout 0.0.1783663570-dev.5 → 0.0.1784095668-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.
- package/ams-checkout.js +3 -3
- package/dist/ams-checkout.min.js +1 -1
- package/esm/core/component/element/elementController/index.js +42 -66
- package/esm/core/component/element/elementProcessor/paymentProcessor.js +10 -13
- package/esm/core/component/element/type.d.ts +1 -2
- package/esm/core/instance/index.d.ts +4 -12
- package/esm/core/instance/index.js +26 -152
- package/esm/foundation/service/security/index.d.ts +4 -9
- package/esm/foundation/service/security/index.js +35 -158
- package/esm/foundation/service/security/security.d.ts +1 -22
- package/esm/foundation/service/security/security.js +37 -150
- package/esm/foundation/utils/preload_helper.d.ts +3 -6
- package/esm/foundation/utils/preload_helper.js +32 -122
- package/esm/main.js +4 -4
- package/esm/modern/index.js +1 -1
- package/esm/plugin/component/channel.d.ts +2 -2
- package/esm/plugin/component/channel.js +18 -18
- package/esm/plugin/component/index.js +29 -36
- package/esm/util/beforeConfirm.d.ts +2 -4
- package/esm/util/beforeConfirm.js +14 -15
- package/esm/util/security.d.ts +1 -22
- package/esm/util/security.js +39 -150
- package/package.json +1 -1
- package/esm/util/jshield-apdid/apdid-loader.js +0 -340
- package/esm/util/jshield-apdid/index.js +0 -21
- package/esm/util/security-registry.d.ts +0 -72
- package/esm/util/security-registry.js +0 -175
|
@@ -1,7 +1,4 @@
|
|
|
1
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 _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
6
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); } }
|
|
7
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; }
|
|
@@ -14,10 +11,8 @@ import { ProductSceneEnum } from "../../types";
|
|
|
14
11
|
import { getWebAppUrl, getWebAppV2Url } from "../utils/web_app_url_utils";
|
|
15
12
|
import { ProductInfoCacheUtil } from "../utils/payment_product_utils";
|
|
16
13
|
import { getWebAppVersion } from "./payment_context_utils";
|
|
17
|
-
import { getSecurityConfigStorageKey, getSecurityHost, getSecurityScene, Security
|
|
14
|
+
import { getSecurityConfigStorageKey, getSecurityHost, getSecurityScene, Security } from "../../util/security";
|
|
18
15
|
import { getOrSetStorageId, safeJson } from "../../util";
|
|
19
|
-
import { SecuritySdkRegistry } from "../../util/security-registry";
|
|
20
|
-
import { ApdidLoader } from "../../util/jshield-apdid";
|
|
21
16
|
var MAX_CLEAR_TIME = 10000;
|
|
22
17
|
var PreloadHelper = /*#__PURE__*/function () {
|
|
23
18
|
function PreloadHelper() {
|
|
@@ -55,128 +50,42 @@ var PreloadHelper = /*#__PURE__*/function () {
|
|
|
55
50
|
console.error('[web-sdk] preload web app failed', error);
|
|
56
51
|
}
|
|
57
52
|
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Preload security SDK asynchronously.
|
|
61
|
-
* Triggers ApdidLoader.load() for async script loading and registers in SecuritySdkRegistry.
|
|
62
|
-
*/
|
|
63
53
|
}, {
|
|
64
54
|
key: "preloadSecuritySDK",
|
|
65
|
-
value:
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
storage = PreloadHelper.getSecurityConfigStorage(product);
|
|
93
|
-
scene = storage.scene || getSecurityScene(product);
|
|
94
|
-
console.log('getSecurityScene', scene);
|
|
95
|
-
h5gateway = storage.h5gateway || getSecurityHost(securityRegion);
|
|
96
|
-
console.log('preloadSecuritySDK', scene);
|
|
97
|
-
|
|
98
|
-
// Check if already in registry
|
|
99
|
-
if (!SecuritySdkRegistry.isReady(scene)) {
|
|
100
|
-
_context.next = 15;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
console.log('[web-sdk] security sdk already ready in registry');
|
|
104
|
-
this.isSecuritySDKPreloaded = true;
|
|
105
|
-
return _context.abrupt("return");
|
|
106
|
-
case 15:
|
|
107
|
-
if (!SecuritySdkRegistry.isLoading(scene)) {
|
|
108
|
-
_context.next = 30;
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
console.log('[web-sdk] security sdk is already loading, waiting...');
|
|
112
|
-
existing = SecuritySdkRegistry.get(scene);
|
|
113
|
-
if (!(existing && existing.status === 'loading')) {
|
|
114
|
-
_context.next = 29;
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
_context.prev = 19;
|
|
118
|
-
_context.next = 22;
|
|
119
|
-
return existing.loadingPromise;
|
|
120
|
-
case 22:
|
|
121
|
-
this.isSecuritySDKPreloaded = true;
|
|
122
|
-
console.log('[web-sdk] preload security sdk succeed (waited for existing load)');
|
|
123
|
-
_context.next = 29;
|
|
124
|
-
break;
|
|
125
|
-
case 26:
|
|
126
|
-
_context.prev = 26;
|
|
127
|
-
_context.t0 = _context["catch"](19);
|
|
128
|
-
console.error('[web-sdk] preload security sdk failed (existing load failed)');
|
|
129
|
-
case 29:
|
|
130
|
-
return _context.abrupt("return");
|
|
131
|
-
case 30:
|
|
132
|
-
// 非阻塞调度 ApdidLoader 加载,preload 立即返回,不阻塞主流程
|
|
133
|
-
// Security 内部的 ensureApdidLoaded() 会在需要 token 时按需等待加载完成
|
|
134
|
-
apdidEnv = mapEnvironment(environment);
|
|
135
|
-
loader = ApdidLoader.getInstance();
|
|
136
|
-
loader.scheduleLoad({
|
|
137
|
-
environment: apdidEnv
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
// Create Security instance and register in registry
|
|
141
|
-
securitySdk = new Security({
|
|
142
|
-
scene: scene,
|
|
143
|
-
h5gateway: h5gateway,
|
|
144
|
-
environment: environment
|
|
145
|
-
});
|
|
146
|
-
loadingPromise = new Promise(function (resolveLoading, rejectLoading) {
|
|
147
|
-
securitySdk.initSecurity(function () {
|
|
148
|
-
SecuritySdkRegistry.setReady(scene, securitySdk);
|
|
149
|
-
_this.isSecuritySDKPreloaded = true;
|
|
150
|
-
console.log('[web-sdk] preload security sdk succeed');
|
|
151
|
-
resolveLoading(securitySdk);
|
|
152
|
-
}, function () {
|
|
153
|
-
SecuritySdkRegistry.setFailed(scene, new Error('Preload security sdk init failed'));
|
|
154
|
-
console.error('[web-sdk] preload security sdk failed');
|
|
155
|
-
rejectLoading(new Error('Preload security sdk init failed'));
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
SecuritySdkRegistry.setLoading(scene, loadingPromise);
|
|
159
|
-
_context.next = 41;
|
|
160
|
-
break;
|
|
161
|
-
case 38:
|
|
162
|
-
_context.prev = 38;
|
|
163
|
-
_context.t1 = _context["catch"](2);
|
|
164
|
-
console.error('[web-sdk] preload security sdk failed', _context.t1);
|
|
165
|
-
case 41:
|
|
166
|
-
case "end":
|
|
167
|
-
return _context.stop();
|
|
168
|
-
}
|
|
169
|
-
}, _callee, this, [[2, 38], [19, 26]]);
|
|
170
|
-
}));
|
|
171
|
-
function preloadSecuritySDK(_x) {
|
|
172
|
-
return _preloadSecuritySDK.apply(this, arguments);
|
|
55
|
+
value: function preloadSecuritySDK(product) {
|
|
56
|
+
var _this = this;
|
|
57
|
+
var securityRegion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'SG';
|
|
58
|
+
try {
|
|
59
|
+
if (this.isSecuritySDKPreloaded) {
|
|
60
|
+
console.log('[web-sdk] security sdk is already loaded');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
var storage = PreloadHelper.getSecurityConfigStorage(product);
|
|
64
|
+
var scene = storage.scene || getSecurityScene(product);
|
|
65
|
+
console.log('getSecurityScene', scene);
|
|
66
|
+
var h5gateway = storage.h5gateway || getSecurityHost(securityRegion);
|
|
67
|
+
console.log('preloadSecuritySDK', scene);
|
|
68
|
+
var securitySdk = new Security({
|
|
69
|
+
scene: scene,
|
|
70
|
+
h5gateway: h5gateway
|
|
71
|
+
});
|
|
72
|
+
securitySdk.initSecurity(function () {
|
|
73
|
+
console.log(_this.securitySdkMap, 'this.securitySdkMap');
|
|
74
|
+
_this.securitySdkMap.set(scene, securitySdk);
|
|
75
|
+
_this.isSecuritySDKPreloaded = true;
|
|
76
|
+
console.log('[web-sdk] preload security sdk succeed');
|
|
77
|
+
}, function () {
|
|
78
|
+
console.error('[web-sdk] preload security sdk failed');
|
|
79
|
+
});
|
|
80
|
+
} catch (error) {
|
|
81
|
+
console.error('[web-sdk] preload security sdk failed', error);
|
|
173
82
|
}
|
|
174
|
-
|
|
175
|
-
}())
|
|
83
|
+
}
|
|
176
84
|
}, {
|
|
177
85
|
key: "getSecuritySdk",
|
|
178
86
|
value: function getSecuritySdk(scene) {
|
|
179
|
-
|
|
87
|
+
var result = this.securitySdkMap.get(scene);
|
|
88
|
+
return result;
|
|
180
89
|
}
|
|
181
90
|
}, {
|
|
182
91
|
key: "buildWebAppPreloadUrl",
|
|
@@ -234,4 +143,5 @@ var PreloadHelper = /*#__PURE__*/function () {
|
|
|
234
143
|
}();
|
|
235
144
|
_defineProperty(PreloadHelper, "isWebAppPreloaded", false);
|
|
236
145
|
_defineProperty(PreloadHelper, "isSecuritySDKPreloaded", false);
|
|
146
|
+
_defineProperty(PreloadHelper, "securitySdkMap", new Map());
|
|
237
147
|
export { PreloadHelper as default };
|
package/esm/main.js
CHANGED
|
@@ -77,7 +77,7 @@ export var AMSAutoDebitPay = /*#__PURE__*/function (_AMSCheckout) {
|
|
|
77
77
|
environment: 'prod'
|
|
78
78
|
};
|
|
79
79
|
PreloadHelper.preloadWebApp(ProductSceneEnum.AUTO_DEBIT_PAY, PaymentMethodCategoryTypeEnum.WALLET, options.environment);
|
|
80
|
-
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.AUTO_DEBIT_PAY, options.securityRegion
|
|
80
|
+
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.AUTO_DEBIT_PAY, options.securityRegion);
|
|
81
81
|
}
|
|
82
82
|
}]);
|
|
83
83
|
return AMSAutoDebitPay;
|
|
@@ -164,7 +164,7 @@ export var AMSCashierPayment = /*#__PURE__*/function (_AMSCheckout2) {
|
|
|
164
164
|
} catch (error) {
|
|
165
165
|
console.error('[web-sdk] preload web app error', error);
|
|
166
166
|
}
|
|
167
|
-
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.CASHIER_PAYMENT, options.securityRegion
|
|
167
|
+
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.CASHIER_PAYMENT, options.securityRegion);
|
|
168
168
|
}
|
|
169
169
|
}]);
|
|
170
170
|
return AMSCashierPayment;
|
|
@@ -188,7 +188,7 @@ export var AMSVaulting = /*#__PURE__*/function (_AMSCheckout3) {
|
|
|
188
188
|
environment: 'prod'
|
|
189
189
|
};
|
|
190
190
|
PreloadHelper.preloadWebApp(ProductSceneEnum.CASHIER_PAYMENT, PaymentMethodCategoryTypeEnum.CARD, options.environment);
|
|
191
|
-
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.VAULTING, options.securityRegion
|
|
191
|
+
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.VAULTING, options.securityRegion);
|
|
192
192
|
}
|
|
193
193
|
}]);
|
|
194
194
|
return AMSVaulting;
|
|
@@ -336,7 +336,7 @@ export var AMSAutoDebit = /*#__PURE__*/function () {
|
|
|
336
336
|
environment: 'prod'
|
|
337
337
|
};
|
|
338
338
|
PreloadHelper.preloadWebApp(ProductSceneEnum.AUTO_DEBIT, PaymentMethodCategoryTypeEnum.WALLET, options.environment);
|
|
339
|
-
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.AUTO_DEBIT, options.securityRegion
|
|
339
|
+
PreloadHelper.preloadSecuritySDK(ProductSceneEnum.AUTO_DEBIT, options.securityRegion);
|
|
340
340
|
}
|
|
341
341
|
}]);
|
|
342
342
|
return AMSAutoDebit;
|
package/esm/modern/index.js
CHANGED
|
@@ -15,7 +15,7 @@ import { createLoader } from '@antglobal/create-sdk-loader';
|
|
|
15
15
|
|
|
16
16
|
import { stageName } from "./stageName";
|
|
17
17
|
var SDKURL = {
|
|
18
|
-
DEV: "https://sdk-dev.marmot-cloud.com/package/ams-checkout/".concat("dev-
|
|
18
|
+
DEV: "https://sdk-dev.marmot-cloud.com/package/ams-checkout/".concat("dev-1784095668", "/ams-checkout.js"),
|
|
19
19
|
LOCAL: "http://localhost:3000/ams-checkout.min.js",
|
|
20
20
|
PROD: 'https://js.antom.com/v2/ams-checkout.js'
|
|
21
21
|
};
|
|
@@ -32,7 +32,7 @@ export declare class ApplePaySdk {
|
|
|
32
32
|
*/
|
|
33
33
|
private paymentStatus;
|
|
34
34
|
/**
|
|
35
|
-
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm
|
|
35
|
+
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm 中止
|
|
36
36
|
*/
|
|
37
37
|
private cancelReason;
|
|
38
38
|
private logger;
|
|
@@ -40,7 +40,7 @@ export declare class ApplePaySdk {
|
|
|
40
40
|
private shipping?;
|
|
41
41
|
private merchantAmount;
|
|
42
42
|
private merchantCurrency;
|
|
43
|
-
private onBeforeConfirm
|
|
43
|
+
private onBeforeConfirm?;
|
|
44
44
|
constructor({ paymentSessionData, parseData, logger, env, shipping, merchantAmount, merchantCurrency, }: {
|
|
45
45
|
paymentSessionData: string;
|
|
46
46
|
parseData: IPaymentSessionMetaData;
|
|
@@ -17,7 +17,7 @@ import { getDoubleFaUrlFromSession } from "../../foundation/utils/web_app_url_ut
|
|
|
17
17
|
import { getApplePayPaymentSession, submitPayInfo } from "../../service";
|
|
18
18
|
import { EnvironmentEnum } from "../../types";
|
|
19
19
|
import { device, isEmpty } from "../../util";
|
|
20
|
-
import { executeWithTimeout, BEFORE_CONFIRM_TIMEOUT_MS
|
|
20
|
+
import { executeWithTimeout, BEFORE_CONFIRM_TIMEOUT_MS } from "../../util/beforeConfirm";
|
|
21
21
|
import { APPLE_PAY_RECURRING_VERSION, APPLE_PAY_VERSION } from "../applepay/interface";
|
|
22
22
|
var APPLEPAYERRORENUM = /*#__PURE__*/function (APPLEPAYERRORENUM) {
|
|
23
23
|
APPLEPAYERRORENUM["APPLE_PAY_MISSING_DATA"] = "APPLE_PAY_MISSING_DATA";
|
|
@@ -155,7 +155,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
155
155
|
*/
|
|
156
156
|
_defineProperty(this, "paymentStatus", void 0);
|
|
157
157
|
/**
|
|
158
|
-
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm
|
|
158
|
+
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm 中止
|
|
159
159
|
*/
|
|
160
160
|
_defineProperty(this, "cancelReason", null);
|
|
161
161
|
_defineProperty(this, "logger", void 0);
|
|
@@ -163,7 +163,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
163
163
|
_defineProperty(this, "shipping", void 0);
|
|
164
164
|
_defineProperty(this, "merchantAmount", void 0);
|
|
165
165
|
_defineProperty(this, "merchantCurrency", void 0);
|
|
166
|
-
_defineProperty(this, "onBeforeConfirm",
|
|
166
|
+
_defineProperty(this, "onBeforeConfirm", void 0);
|
|
167
167
|
this.paymentSessionData = paymentSessionData;
|
|
168
168
|
this.parseData = parseData;
|
|
169
169
|
this.env = env;
|
|
@@ -213,7 +213,6 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
213
213
|
try {
|
|
214
214
|
if (!_this.session) return;
|
|
215
215
|
_this.paymentStatus = PAYMENT_STATUS.PENDING;
|
|
216
|
-
_this.cancelReason = 'USER_CANCEL';
|
|
217
216
|
_this.session.onvalidatemerchant = /*#__PURE__*/function () {
|
|
218
217
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(event) {
|
|
219
218
|
var requestParams, res, merchantSession, _this$logger, _this$logger2;
|
|
@@ -283,7 +282,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
283
282
|
}();
|
|
284
283
|
_this.session.onpaymentauthorized = /*#__PURE__*/function () {
|
|
285
284
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(event) {
|
|
286
|
-
var exception, _event$payment, token, billingContact, shippingContact, _this$parseData, obj, _this$parseData$payme, requiredBillingContactFields, requiredShippingContactFields, _this$logger3, _this$logger4, _this$logger6, startTime, _yield$executeWithTim, rawResult, timedOut, shouldContinue,
|
|
285
|
+
var exception, _event$payment, token, billingContact, shippingContact, _this$parseData, obj, _this$parseData$payme, requiredBillingContactFields, requiredShippingContactFields, _this$logger3, _this$logger4, _this$logger6, startTime, _yield$executeWithTim, rawResult, timedOut, shouldContinue, _this$logger5, _this$session2, _this$session2$comple, _this$logger7, _this$session3, _this$session3$comple, res, _this$logger8;
|
|
287
286
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
288
287
|
while (1) switch (_context3.prev = _context3.next) {
|
|
289
288
|
case 0:
|
|
@@ -324,25 +323,26 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
324
323
|
_context3.next = 39;
|
|
325
324
|
break;
|
|
326
325
|
case 11:
|
|
326
|
+
// 清空回原始状态
|
|
327
|
+
_this.cancelReason = 'USER_CANCEL';
|
|
327
328
|
(_this$logger4 = _this.logger) === null || _this$logger4 === void 0 || _this$logger4.logInfo({
|
|
328
329
|
title: 'sdk_before_confirm_start'
|
|
329
330
|
}, {
|
|
330
331
|
paymentMethodType: 'APPLEPAY',
|
|
331
332
|
path: 'applePay_chrome_sdk'
|
|
332
333
|
});
|
|
333
|
-
_context3.prev =
|
|
334
|
+
_context3.prev = 13;
|
|
334
335
|
startTime = Date.now();
|
|
335
|
-
_context3.next =
|
|
336
|
+
_context3.next = 17;
|
|
336
337
|
return executeWithTimeout(function () {
|
|
337
338
|
return _this.onBeforeConfirm();
|
|
338
339
|
});
|
|
339
|
-
case
|
|
340
|
+
case 17:
|
|
340
341
|
_yield$executeWithTim = _context3.sent;
|
|
341
342
|
rawResult = _yield$executeWithTim.result;
|
|
342
343
|
timedOut = _yield$executeWithTim.timedOut;
|
|
343
344
|
shouldContinue = rawResult;
|
|
344
|
-
|
|
345
|
-
if (isTimeout) {
|
|
345
|
+
if (timedOut || Date.now() - startTime >= BEFORE_CONFIRM_TIMEOUT_MS) {
|
|
346
346
|
(_this$logger5 = _this.logger) === null || _this$logger5 === void 0 || _this$logger5.logError({
|
|
347
347
|
title: 'sdk_before_confirm_timeout'
|
|
348
348
|
});
|
|
@@ -357,11 +357,11 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
357
357
|
_context3.next = 29;
|
|
358
358
|
break;
|
|
359
359
|
}
|
|
360
|
-
_this.cancelReason =
|
|
360
|
+
_this.cancelReason = 'MERCHANT_ABORT';
|
|
361
361
|
(_this$session2 = _this.session) === null || _this$session2 === void 0 || (_this$session2$comple = _this$session2.completePayment) === null || _this$session2$comple === void 0 || _this$session2$comple.call(_this$session2, window.ApplePaySession.STATUS_FAILURE);
|
|
362
362
|
_this.abortSession();
|
|
363
363
|
reject({
|
|
364
|
-
errorCode:
|
|
364
|
+
errorCode: 'MERCHANT_CONFIRM_ABORT'
|
|
365
365
|
});
|
|
366
366
|
return _context3.abrupt("return");
|
|
367
367
|
case 29:
|
|
@@ -369,7 +369,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
369
369
|
break;
|
|
370
370
|
case 31:
|
|
371
371
|
_context3.prev = 31;
|
|
372
|
-
_context3.t0 = _context3["catch"](
|
|
372
|
+
_context3.t0 = _context3["catch"](13);
|
|
373
373
|
(_this$logger7 = _this.logger) === null || _this$logger7 === void 0 || _this$logger7.logError({
|
|
374
374
|
title: 'sdk_before_confirm_error'
|
|
375
375
|
}, {
|
|
@@ -381,7 +381,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
381
381
|
(_this$session3 = _this.session) === null || _this$session3 === void 0 || (_this$session3$comple = _this$session3.completePayment) === null || _this$session3$comple === void 0 || _this$session3$comple.call(_this$session3, window.ApplePaySession.STATUS_FAILURE);
|
|
382
382
|
_this.abortSession();
|
|
383
383
|
reject({
|
|
384
|
-
errorCode:
|
|
384
|
+
errorCode: 'MERCHANT_CONFIRM_ABORT'
|
|
385
385
|
});
|
|
386
386
|
return _context3.abrupt("return");
|
|
387
387
|
case 39:
|
|
@@ -402,7 +402,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
402
402
|
case "end":
|
|
403
403
|
return _context3.stop();
|
|
404
404
|
}
|
|
405
|
-
}, _callee3, null, [[
|
|
405
|
+
}, _callee3, null, [[13, 31]]);
|
|
406
406
|
}));
|
|
407
407
|
return function (_x2) {
|
|
408
408
|
return _ref3.apply(this, arguments);
|
|
@@ -420,10 +420,10 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
420
420
|
title: 'a3753.b103030.c386485.d507498'
|
|
421
421
|
});
|
|
422
422
|
}
|
|
423
|
-
// cancelReason
|
|
424
|
-
|
|
423
|
+
// cancelReason === 'MERCHANT_ABORT': onBeforeConfirm 返回 false 或异常,由商户主动中止
|
|
424
|
+
// 其他:用户主动取消付款界面
|
|
425
425
|
reject({
|
|
426
|
-
errorCode: _this.cancelReason === 'MERCHANT_ABORT'
|
|
426
|
+
errorCode: _this.cancelReason === 'MERCHANT_ABORT' ? 'MERCHANT_CONFIRM_ABORT' : APPLEPAYERRORENUM.APPLE_PAY_CANCEL
|
|
427
427
|
});
|
|
428
428
|
};
|
|
429
429
|
_this.session.begin();
|
|
@@ -156,28 +156,24 @@ var ComponentApp = /*#__PURE__*/function () {
|
|
|
156
156
|
var securitySDK = this.AMSSDK._getSecuritySDKByProductScene({
|
|
157
157
|
product: product
|
|
158
158
|
});
|
|
159
|
-
if (securitySDK) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Use _newSecuritySDKByScene which handles loading/ready/failed states internally
|
|
165
|
-
this.AMSSDK.logger.logInfo({
|
|
166
|
-
title: 'sdk_event_securitySdkInit'
|
|
167
|
-
});
|
|
168
|
-
this.AMSSDK._newSecuritySDKByScene({
|
|
169
|
-
product: product
|
|
170
|
-
}, function () {
|
|
171
|
-
_this.AMSSDK.logger.logInfo({
|
|
172
|
-
title: 'sdk_event_securitySdkInitSuccess'
|
|
159
|
+
if (!securitySDK) {
|
|
160
|
+
this.AMSSDK.logger.logInfo({
|
|
161
|
+
title: 'sdk_event_securitySdkInit'
|
|
173
162
|
});
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
163
|
+
this.AMSSDK._newSecuritySDKByScene({
|
|
164
|
+
product: product
|
|
165
|
+
}, function () {
|
|
166
|
+
_this.AMSSDK.logger.logInfo({
|
|
167
|
+
title: 'sdk_event_securitySdkInitSuccess'
|
|
168
|
+
});
|
|
169
|
+
}, function () {
|
|
170
|
+
_this.AMSSDK.logger.logError({
|
|
171
|
+
title: 'sdk_error_securitySdkInitFailed'
|
|
172
|
+
}, {
|
|
173
|
+
sign: 'SDK internal initialization'
|
|
174
|
+
});
|
|
179
175
|
});
|
|
180
|
-
}
|
|
176
|
+
}
|
|
181
177
|
}
|
|
182
178
|
}, {
|
|
183
179
|
key: "logDeviceId",
|
|
@@ -212,39 +208,36 @@ var ComponentApp = /*#__PURE__*/function () {
|
|
|
212
208
|
while (1) switch (_context.prev = _context.next) {
|
|
213
209
|
case 0:
|
|
214
210
|
productScene = (_this2$_renderParams = _this2._renderParams) === null || _this2$_renderParams === void 0 || (_this2$_renderParams = _this2$_renderParams.paymentSessionMetaData) === null || _this2$_renderParams === void 0 || (_this2$_renderParams = _this2$_renderParams.paymentSessionConfig) === null || _this2$_renderParams === void 0 ? void 0 : _this2$_renderParams.productScene;
|
|
215
|
-
getDeviceIdStartTime = Date.now();
|
|
216
|
-
|
|
217
|
-
return _this2.AMSSDK._awaitSecuritySDKByProductScene({
|
|
211
|
+
getDeviceIdStartTime = Date.now();
|
|
212
|
+
securitySDK = _this2.AMSSDK._getSecuritySDKByProductScene({
|
|
218
213
|
product: (deviceIdParameter === null || deviceIdParameter === void 0 ? void 0 : deviceIdParameter.productScene) || productScene
|
|
219
214
|
});
|
|
220
|
-
case 4:
|
|
221
|
-
securitySDK = _context.sent;
|
|
222
215
|
deviceId = '';
|
|
223
216
|
if (!securitySDK) {
|
|
224
|
-
_context.next =
|
|
217
|
+
_context.next = 16;
|
|
225
218
|
break;
|
|
226
219
|
}
|
|
227
220
|
if (!(isPolling && parseInt(deviceIdParameter === null || deviceIdParameter === void 0 ? void 0 : deviceIdParameter.tokenCollectTime) > 0)) {
|
|
228
|
-
_context.next =
|
|
221
|
+
_context.next = 11;
|
|
229
222
|
break;
|
|
230
223
|
}
|
|
231
|
-
_context.next =
|
|
224
|
+
_context.next = 8;
|
|
232
225
|
return securitySDK.pollingGetApdidToken(deviceIdParameter);
|
|
233
|
-
case
|
|
226
|
+
case 8:
|
|
234
227
|
_context.t0 = _context.sent;
|
|
235
|
-
_context.next =
|
|
228
|
+
_context.next = 14;
|
|
236
229
|
break;
|
|
237
|
-
case
|
|
238
|
-
_context.next =
|
|
230
|
+
case 11:
|
|
231
|
+
_context.next = 13;
|
|
239
232
|
return securitySDK.getApdidToken();
|
|
240
|
-
case
|
|
233
|
+
case 13:
|
|
241
234
|
_context.t0 = _context.sent;
|
|
242
|
-
case
|
|
235
|
+
case 14:
|
|
243
236
|
deviceId = _context.t0;
|
|
244
237
|
_this2.logDeviceId(deviceId, getDeviceIdStartTime);
|
|
245
|
-
case
|
|
238
|
+
case 16:
|
|
246
239
|
resolve(deviceId);
|
|
247
|
-
case
|
|
240
|
+
case 17:
|
|
248
241
|
case "end":
|
|
249
242
|
return _context.stop();
|
|
250
243
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
export declare const BEFORE_CONFIRM_TIMEOUT_MS =
|
|
2
|
-
export declare const MERCHANT_CONFIRM_ABORT_CODE = "MERCHANT_CONFIRM_ABORT";
|
|
3
|
-
export declare const MERCHANT_CONFIRM_TIMEOUT_CODE = "MERCHANT_CONFIRM_TIMEOUT";
|
|
1
|
+
export declare const BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
4
2
|
/**
|
|
5
3
|
* 带超时的异步执行,始终清理定时器避免 unhandled promise rejection。
|
|
6
4
|
*
|
|
7
5
|
* @param fn - 要执行的异步函数
|
|
8
|
-
* @param timeoutMs - 超时时间(毫秒),默认
|
|
6
|
+
* @param timeoutMs - 超时时间(毫秒),默认 15000
|
|
9
7
|
* @returns result 为 fn 的返回值(超时时为 undefined),timedOut 表示是否因超时返回
|
|
10
8
|
*/
|
|
11
9
|
export declare function executeWithTimeout<T>(fn: () => Promise<T>, timeoutMs?: number): Promise<{
|
|
@@ -2,16 +2,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
2
2
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
3
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
4
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
|
-
export var BEFORE_CONFIRM_TIMEOUT_MS =
|
|
6
|
-
export var MERCHANT_CONFIRM_ABORT_CODE = 'MERCHANT_CONFIRM_ABORT';
|
|
7
|
-
export var MERCHANT_CONFIRM_TIMEOUT_CODE = 'MERCHANT_CONFIRM_TIMEOUT';
|
|
8
|
-
var BEFORE_CONFIRM_TIMEOUT_SIGNAL = Symbol('BEFORE_CONFIRM_TIMEOUT');
|
|
5
|
+
export var BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
9
6
|
|
|
10
7
|
/**
|
|
11
8
|
* 带超时的异步执行,始终清理定时器避免 unhandled promise rejection。
|
|
12
|
-
*
|
|
9
|
+
*
|
|
13
10
|
* @param fn - 要执行的异步函数
|
|
14
|
-
* @param timeoutMs - 超时时间(毫秒),默认
|
|
11
|
+
* @param timeoutMs - 超时时间(毫秒),默认 15000
|
|
15
12
|
* @returns result 为 fn 的返回值(超时时为 undefined),timedOut 表示是否因超时返回
|
|
16
13
|
*/
|
|
17
14
|
export function executeWithTimeout(_x) {
|
|
@@ -23,6 +20,7 @@ function _executeWithTimeout() {
|
|
|
23
20
|
timerId,
|
|
24
21
|
timeoutPromise,
|
|
25
22
|
result,
|
|
23
|
+
isTimeout,
|
|
26
24
|
_args = arguments;
|
|
27
25
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
28
26
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -30,7 +28,7 @@ function _executeWithTimeout() {
|
|
|
30
28
|
timeoutMs = _args.length > 1 && _args[1] !== undefined ? _args[1] : BEFORE_CONFIRM_TIMEOUT_MS;
|
|
31
29
|
timeoutPromise = new Promise(function (_, reject) {
|
|
32
30
|
timerId = setTimeout(function () {
|
|
33
|
-
return reject(
|
|
31
|
+
return reject(new Error('timed out'));
|
|
34
32
|
}, timeoutMs);
|
|
35
33
|
});
|
|
36
34
|
_context.prev = 2;
|
|
@@ -45,25 +43,26 @@ function _executeWithTimeout() {
|
|
|
45
43
|
case 9:
|
|
46
44
|
_context.prev = 9;
|
|
47
45
|
_context.t0 = _context["catch"](2);
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
isTimeout = _context.t0 instanceof Error && _context.t0.message === 'timed out';
|
|
47
|
+
if (!isTimeout) {
|
|
48
|
+
_context.next = 14;
|
|
50
49
|
break;
|
|
51
50
|
}
|
|
52
51
|
return _context.abrupt("return", {
|
|
53
52
|
result: undefined,
|
|
54
53
|
timedOut: true
|
|
55
54
|
});
|
|
56
|
-
case 13:
|
|
57
|
-
throw _context.t0;
|
|
58
55
|
case 14:
|
|
59
|
-
_context.
|
|
56
|
+
throw _context.t0;
|
|
57
|
+
case 15:
|
|
58
|
+
_context.prev = 15;
|
|
60
59
|
clearTimeout(timerId);
|
|
61
|
-
return _context.finish(
|
|
62
|
-
case
|
|
60
|
+
return _context.finish(15);
|
|
61
|
+
case 18:
|
|
63
62
|
case "end":
|
|
64
63
|
return _context.stop();
|
|
65
64
|
}
|
|
66
|
-
}, _callee, null, [[2, 9,
|
|
65
|
+
}, _callee, null, [[2, 9, 15, 18]]);
|
|
67
66
|
}));
|
|
68
67
|
return _executeWithTimeout.apply(this, arguments);
|
|
69
68
|
}
|
package/esm/util/security.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IsecurityConfig, ProductSceneEnum, DeviceIdParameter } from '../types';
|
|
2
|
-
import type { ApdidEnvironment } from './jshield-apdid';
|
|
3
2
|
export declare const getSecurityConfigStorageKey: (scene: ProductSceneEnum) => string;
|
|
4
3
|
export declare enum SecurityRegionEnum {
|
|
5
4
|
SG = "SG",
|
|
@@ -24,30 +23,10 @@ export declare const sceneMap: {
|
|
|
24
23
|
};
|
|
25
24
|
export declare const getSecurityHost: (region: string) => string;
|
|
26
25
|
export declare const getSecurityScene: (product: string) => string;
|
|
27
|
-
/**
|
|
28
|
-
* Map SDK environment string to ApdidEnvironment for CDN URL selection.
|
|
29
|
-
*/
|
|
30
|
-
export declare const mapEnvironment: (env?: string) => ApdidEnvironment;
|
|
31
26
|
export declare class Security {
|
|
32
27
|
scene: string;
|
|
33
28
|
h5gateway: string;
|
|
34
|
-
|
|
35
|
-
private apdidLoaded;
|
|
36
|
-
private apdidLoadFailed;
|
|
37
|
-
constructor(options: IsecurityConfig & {
|
|
38
|
-
environment?: string;
|
|
39
|
-
});
|
|
40
|
-
/**
|
|
41
|
-
* Ensure the apdid-core script is loaded async.
|
|
42
|
-
* Returns true if loaded successfully, false otherwise.
|
|
43
|
-
* On failure, sets apdidLoadFailed flag for graceful degradation.
|
|
44
|
-
*/
|
|
45
|
-
private ensureApdidLoaded;
|
|
46
|
-
/**
|
|
47
|
-
* Get the APDID module from the loader.
|
|
48
|
-
* Returns undefined if not loaded.
|
|
49
|
-
*/
|
|
50
|
-
private getAPDIDModule;
|
|
29
|
+
constructor(options: IsecurityConfig);
|
|
51
30
|
initSecurity(successCallback: any, failCallback: any): void;
|
|
52
31
|
private initToken;
|
|
53
32
|
pollingGetApdidToken(config?: DeviceIdParameter): Promise<string>;
|