@alipay/ams-checkout 0.0.1781167787-dev.0 → 0.0.1781669097-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/constant/index.d.ts +3 -0
- package/esm/constant/index.js +4 -0
- package/esm/core/component/element/elementController/index.d.ts +2 -0
- package/esm/core/component/element/elementController/index.js +164 -25
- package/esm/core/component/element/elementProcessor/paymentProcessor.d.ts +10 -0
- package/esm/core/component/element/elementProcessor/paymentProcessor.js +152 -36
- package/esm/core/component/element/type.d.ts +20 -0
- package/esm/modern/index.js +1 -1
- package/esm/plugin/component/channel.d.ts +13 -2
- package/esm/plugin/component/channel.js +133 -30
- package/esm/tsdoc-metadata.json +1 -1
- package/esm/types/index.d.ts +2 -7
- package/esm/util/beforeConfirm.d.ts +12 -0
- package/esm/util/beforeConfirm.js +68 -0
- package/esm/util/spm-map.d.ts +6 -0
- package/esm/util/spm-map.js +7 -1
- package/package.json +1 -1
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-1781669097", "/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
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CKPShipping } from '../../core/component/element/type';
|
|
2
1
|
import { type EventPayload, type IPaymentSessionMetaData } from '../../types';
|
|
2
|
+
import type { CKPShipping } from '../../core/component/element/type';
|
|
3
3
|
import { Logger } from '../../util/logger';
|
|
4
4
|
export type IChannelBehavior = {
|
|
5
5
|
usePaymentSessionAsQueryResult: boolean;
|
|
@@ -31,16 +31,27 @@ export declare class ApplePaySdk {
|
|
|
31
31
|
* @description 支付状态,pending:支付中,normal:正常
|
|
32
32
|
*/
|
|
33
33
|
private paymentStatus;
|
|
34
|
+
/**
|
|
35
|
+
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm 中止
|
|
36
|
+
*/
|
|
37
|
+
private cancelReason;
|
|
34
38
|
private logger;
|
|
35
39
|
private env;
|
|
36
40
|
private shipping?;
|
|
37
|
-
|
|
41
|
+
private merchantAmount;
|
|
42
|
+
private merchantCurrency;
|
|
43
|
+
private onBeforeConfirm?;
|
|
44
|
+
constructor({ paymentSessionData, parseData, logger, env, shipping, merchantAmount, merchantCurrency, }: {
|
|
38
45
|
paymentSessionData: string;
|
|
39
46
|
parseData: IPaymentSessionMetaData;
|
|
40
47
|
logger: Logger;
|
|
41
48
|
env?: string;
|
|
42
49
|
shipping?: CKPShipping;
|
|
50
|
+
merchantAmount?: string | null;
|
|
51
|
+
merchantCurrency?: string | null;
|
|
43
52
|
});
|
|
53
|
+
/** 设置商户 onBeforeConfirm 回调(展码链路使用) */
|
|
54
|
+
setOnBeforeConfirm(callback: (() => Promise<boolean>) | null): void;
|
|
44
55
|
startPay(): Promise<unknown>;
|
|
45
56
|
begin(): Promise<unknown>;
|
|
46
57
|
private submitPay;
|
|
@@ -1,4 +1,6 @@
|
|
|
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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2
4
|
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
5
|
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
6
|
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); }); }; }
|
|
@@ -15,6 +17,7 @@ import { getDoubleFaUrlFromSession } from "../../foundation/utils/web_app_url_ut
|
|
|
15
17
|
import { getApplePayPaymentSession, submitPayInfo } from "../../service";
|
|
16
18
|
import { EnvironmentEnum } from "../../types";
|
|
17
19
|
import { device, isEmpty } from "../../util";
|
|
20
|
+
import { executeWithTimeout, BEFORE_CONFIRM_TIMEOUT_MS } from "../../util/beforeConfirm";
|
|
18
21
|
import { APPLE_PAY_RECURRING_VERSION, APPLE_PAY_VERSION } from "../applepay/interface";
|
|
19
22
|
var APPLEPAYERRORENUM = /*#__PURE__*/function (APPLEPAYERRORENUM) {
|
|
20
23
|
APPLEPAYERRORENUM["APPLE_PAY_MISSING_DATA"] = "APPLE_PAY_MISSING_DATA";
|
|
@@ -89,9 +92,7 @@ export var handleGooglePay = function handleGooglePay(data) {
|
|
|
89
92
|
var script = document.createElement('script');
|
|
90
93
|
script.src = 'https://pay.google.com/gp/p/js/pay.js';
|
|
91
94
|
script.async = true;
|
|
92
|
-
|
|
93
|
-
// 导致不支持 CORS 的第三方脚本(如 pay.google.com)加载失败
|
|
94
|
-
Node.prototype.appendChild.call(document.body, script);
|
|
95
|
+
document.body.appendChild(script);
|
|
95
96
|
// 执行googlePay sdk
|
|
96
97
|
script.onload = function () {
|
|
97
98
|
var paymentsClient = new window.google.payments.api.PaymentsClient({
|
|
@@ -139,7 +140,11 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
139
140
|
logger = _ref.logger,
|
|
140
141
|
_ref$env = _ref.env,
|
|
141
142
|
env = _ref$env === void 0 ? EnvironmentEnum.prod : _ref$env,
|
|
142
|
-
shipping = _ref.shipping
|
|
143
|
+
shipping = _ref.shipping,
|
|
144
|
+
_ref$merchantAmount = _ref.merchantAmount,
|
|
145
|
+
merchantAmount = _ref$merchantAmount === void 0 ? null : _ref$merchantAmount,
|
|
146
|
+
_ref$merchantCurrency = _ref.merchantCurrency,
|
|
147
|
+
merchantCurrency = _ref$merchantCurrency === void 0 ? null : _ref$merchantCurrency;
|
|
143
148
|
_classCallCheck(this, ApplePaySdk);
|
|
144
149
|
_defineProperty(this, "APPLESDKURL", 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js');
|
|
145
150
|
_defineProperty(this, "session", null);
|
|
@@ -149,16 +154,31 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
149
154
|
* @description 支付状态,pending:支付中,normal:正常
|
|
150
155
|
*/
|
|
151
156
|
_defineProperty(this, "paymentStatus", void 0);
|
|
157
|
+
/**
|
|
158
|
+
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm 中止
|
|
159
|
+
*/
|
|
160
|
+
_defineProperty(this, "cancelReason", null);
|
|
152
161
|
_defineProperty(this, "logger", void 0);
|
|
153
162
|
_defineProperty(this, "env", void 0);
|
|
154
163
|
_defineProperty(this, "shipping", void 0);
|
|
164
|
+
_defineProperty(this, "merchantAmount", void 0);
|
|
165
|
+
_defineProperty(this, "merchantCurrency", void 0);
|
|
166
|
+
_defineProperty(this, "onBeforeConfirm", void 0);
|
|
155
167
|
this.paymentSessionData = paymentSessionData;
|
|
156
168
|
this.parseData = parseData;
|
|
157
169
|
this.env = env;
|
|
158
170
|
this.logger = logger;
|
|
159
171
|
this.shipping = shipping;
|
|
172
|
+
this.merchantAmount = merchantAmount;
|
|
173
|
+
this.merchantCurrency = merchantCurrency;
|
|
160
174
|
}
|
|
175
|
+
/** 设置商户 onBeforeConfirm 回调(展码链路使用) */
|
|
161
176
|
_createClass(ApplePaySdk, [{
|
|
177
|
+
key: "setOnBeforeConfirm",
|
|
178
|
+
value: function setOnBeforeConfirm(callback) {
|
|
179
|
+
this.onBeforeConfirm = callback;
|
|
180
|
+
}
|
|
181
|
+
}, {
|
|
162
182
|
key: "startPay",
|
|
163
183
|
value: function () {
|
|
164
184
|
var _startPay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
@@ -262,7 +282,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
262
282
|
}();
|
|
263
283
|
_this.session.onpaymentauthorized = /*#__PURE__*/function () {
|
|
264
284
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(event) {
|
|
265
|
-
var exception, _event$payment, token, billingContact, shippingContact, _this$parseData, obj, _this$parseData$payme, requiredBillingContactFields, requiredShippingContactFields, res, _this$
|
|
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;
|
|
266
286
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
267
287
|
while (1) switch (_context3.prev = _context3.next) {
|
|
268
288
|
case 0:
|
|
@@ -276,7 +296,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
276
296
|
};
|
|
277
297
|
_event$payment = event === null || event === void 0 ? void 0 : event.payment, token = _event$payment.token, billingContact = _event$payment.billingContact, shippingContact = _event$payment.shippingContact;
|
|
278
298
|
if (!token) {
|
|
279
|
-
_context3.next =
|
|
299
|
+
_context3.next = 46;
|
|
280
300
|
break;
|
|
281
301
|
}
|
|
282
302
|
obj = {
|
|
@@ -289,24 +309,100 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
289
309
|
if (!isEmpty(requiredShippingContactFields) && shippingContact) {
|
|
290
310
|
obj['applePayShippingContact'] = JSON.stringify(shippingContact);
|
|
291
311
|
}
|
|
292
|
-
|
|
312
|
+
// Chrome 展码链路:在 submitPay 之前调用商户的 onBeforeConfirm 回调,与 Safari 链路对齐
|
|
313
|
+
if (_this.onBeforeConfirm) {
|
|
314
|
+
_context3.next = 11;
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
(_this$logger3 = _this.logger) === null || _this$logger3 === void 0 || _this$logger3.logInfo({
|
|
318
|
+
title: 'sdk_before_confirm_skip'
|
|
319
|
+
}, {
|
|
320
|
+
paymentMethodType: 'APPLEPAY',
|
|
321
|
+
path: 'applePay_chrome_sdk'
|
|
322
|
+
});
|
|
323
|
+
_context3.next = 39;
|
|
324
|
+
break;
|
|
325
|
+
case 11:
|
|
326
|
+
// 清空回原始状态
|
|
327
|
+
_this.cancelReason = 'USER_CANCEL';
|
|
328
|
+
(_this$logger4 = _this.logger) === null || _this$logger4 === void 0 || _this$logger4.logInfo({
|
|
329
|
+
title: 'sdk_before_confirm_start'
|
|
330
|
+
}, {
|
|
331
|
+
paymentMethodType: 'APPLEPAY',
|
|
332
|
+
path: 'applePay_chrome_sdk'
|
|
333
|
+
});
|
|
334
|
+
_context3.prev = 13;
|
|
335
|
+
startTime = Date.now();
|
|
336
|
+
_context3.next = 17;
|
|
337
|
+
return executeWithTimeout(function () {
|
|
338
|
+
return _this.onBeforeConfirm();
|
|
339
|
+
});
|
|
340
|
+
case 17:
|
|
341
|
+
_yield$executeWithTim = _context3.sent;
|
|
342
|
+
rawResult = _yield$executeWithTim.result;
|
|
343
|
+
timedOut = _yield$executeWithTim.timedOut;
|
|
344
|
+
shouldContinue = rawResult;
|
|
345
|
+
if (timedOut || Date.now() - startTime >= BEFORE_CONFIRM_TIMEOUT_MS) {
|
|
346
|
+
(_this$logger5 = _this.logger) === null || _this$logger5 === void 0 || _this$logger5.logError({
|
|
347
|
+
title: 'sdk_before_confirm_timeout'
|
|
348
|
+
});
|
|
349
|
+
shouldContinue = false;
|
|
350
|
+
}
|
|
351
|
+
(_this$logger6 = _this.logger) === null || _this$logger6 === void 0 || _this$logger6.logInfo({
|
|
352
|
+
title: 'sdk_element_beforeConfirm_callback_result'
|
|
353
|
+
}, {
|
|
354
|
+
shouldContinue: shouldContinue
|
|
355
|
+
});
|
|
356
|
+
if (shouldContinue) {
|
|
357
|
+
_context3.next = 29;
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
_this.cancelReason = 'MERCHANT_ABORT';
|
|
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
|
+
_this.abortSession();
|
|
363
|
+
reject({
|
|
364
|
+
errorCode: 'MERCHANT_CONFIRM_ABORT'
|
|
365
|
+
});
|
|
366
|
+
return _context3.abrupt("return");
|
|
367
|
+
case 29:
|
|
368
|
+
_context3.next = 39;
|
|
369
|
+
break;
|
|
370
|
+
case 31:
|
|
371
|
+
_context3.prev = 31;
|
|
372
|
+
_context3.t0 = _context3["catch"](13);
|
|
373
|
+
(_this$logger7 = _this.logger) === null || _this$logger7 === void 0 || _this$logger7.logError({
|
|
374
|
+
title: 'sdk_before_confirm_error'
|
|
375
|
+
}, {
|
|
376
|
+
paymentMethodType: 'APPLEPAY',
|
|
377
|
+
path: 'applePay_chrome_sdk',
|
|
378
|
+
errorMessage: String((_context3.t0 === null || _context3.t0 === void 0 ? void 0 : _context3.t0.message) || _context3.t0).slice(0, 200)
|
|
379
|
+
});
|
|
380
|
+
_this.cancelReason = 'MERCHANT_ABORT';
|
|
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
|
+
_this.abortSession();
|
|
383
|
+
reject({
|
|
384
|
+
errorCode: 'MERCHANT_CONFIRM_ABORT'
|
|
385
|
+
});
|
|
386
|
+
return _context3.abrupt("return");
|
|
387
|
+
case 39:
|
|
388
|
+
_context3.next = 41;
|
|
293
389
|
return _this.submitPay(obj);
|
|
294
|
-
case
|
|
390
|
+
case 41:
|
|
295
391
|
res = _context3.sent;
|
|
296
392
|
_this.setPayStatus(res);
|
|
297
393
|
resolve(res);
|
|
298
|
-
_context3.next =
|
|
394
|
+
_context3.next = 48;
|
|
299
395
|
break;
|
|
300
|
-
case
|
|
301
|
-
(_this$
|
|
396
|
+
case 46:
|
|
397
|
+
(_this$logger8 = _this.logger) === null || _this$logger8 === void 0 || _this$logger8.logError({
|
|
302
398
|
title: 'a3753.b103030.c386485.d507486'
|
|
303
399
|
});
|
|
304
400
|
exception();
|
|
305
|
-
case
|
|
401
|
+
case 48:
|
|
306
402
|
case "end":
|
|
307
403
|
return _context3.stop();
|
|
308
404
|
}
|
|
309
|
-
}, _callee3);
|
|
405
|
+
}, _callee3, null, [[13, 31]]);
|
|
310
406
|
}));
|
|
311
407
|
return function (_x2) {
|
|
312
408
|
return _ref3.apply(this, arguments);
|
|
@@ -314,18 +410,20 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
314
410
|
}();
|
|
315
411
|
_this.session.oncancel = function () {
|
|
316
412
|
if (_this.paymentStatus === PAYMENT_STATUS.PENDING) {
|
|
317
|
-
var _this$
|
|
318
|
-
(_this$
|
|
413
|
+
var _this$logger9;
|
|
414
|
+
(_this$logger9 = _this.logger) === null || _this$logger9 === void 0 || _this$logger9.logError({
|
|
319
415
|
title: 'a3753.b103030.c386485.d507497'
|
|
320
416
|
});
|
|
321
417
|
} else {
|
|
322
|
-
var _this$
|
|
323
|
-
(_this$
|
|
418
|
+
var _this$logger10;
|
|
419
|
+
(_this$logger10 = _this.logger) === null || _this$logger10 === void 0 || _this$logger10.logInfo({
|
|
324
420
|
title: 'a3753.b103030.c386485.d507498'
|
|
325
421
|
});
|
|
326
422
|
}
|
|
423
|
+
// cancelReason === 'MERCHANT_ABORT': onBeforeConfirm 返回 false 或异常,由商户主动中止
|
|
424
|
+
// 其他:用户主动取消付款界面
|
|
327
425
|
reject({
|
|
328
|
-
errorCode: APPLEPAYERRORENUM.APPLE_PAY_CANCEL
|
|
426
|
+
errorCode: _this.cancelReason === 'MERCHANT_ABORT' ? 'MERCHANT_CONFIRM_ABORT' : APPLEPAYERRORENUM.APPLE_PAY_CANCEL
|
|
329
427
|
});
|
|
330
428
|
};
|
|
331
429
|
_this.session.begin();
|
|
@@ -345,7 +443,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
345
443
|
case 0:
|
|
346
444
|
_context4.prev = 0;
|
|
347
445
|
_context4.t0 = submitPayInfo;
|
|
348
|
-
_context4.t1 = {
|
|
446
|
+
_context4.t1 = _objectSpread({
|
|
349
447
|
paymentSessionConfig: (_this$parseData2 = this.parseData) === null || _this$parseData2 === void 0 ? void 0 : _this$parseData2.paymentSessionConfig,
|
|
350
448
|
paymentSessionData: this.paymentSessionData,
|
|
351
449
|
paymentFactors: params,
|
|
@@ -353,7 +451,12 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
353
451
|
paymentMethodType: 'APPLEPAY'
|
|
354
452
|
},
|
|
355
453
|
shipping: this.shipping
|
|
356
|
-
}
|
|
454
|
+
}, this.merchantAmount && this.merchantCurrency ? {
|
|
455
|
+
paymentAmount: {
|
|
456
|
+
amount: this.merchantAmount,
|
|
457
|
+
currency: this.merchantCurrency
|
|
458
|
+
}
|
|
459
|
+
} : {});
|
|
357
460
|
_context4.t2 = this.env;
|
|
358
461
|
_context4.next = 6;
|
|
359
462
|
return this.getDeviceId();
|
|
@@ -389,7 +492,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
389
492
|
}, {
|
|
390
493
|
key: "setPayStatus",
|
|
391
494
|
value: function setPayStatus(result) {
|
|
392
|
-
var _this$
|
|
495
|
+
var _this$session4, _this$session4$comple;
|
|
393
496
|
var payStatus = {
|
|
394
497
|
success: window.ApplePaySession.STATUS_SUCCESS,
|
|
395
498
|
fail: window.ApplePaySession.STATUS_FAILURE
|
|
@@ -401,13 +504,13 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
401
504
|
status = 'fail';
|
|
402
505
|
}
|
|
403
506
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
404
|
-
(_this$
|
|
507
|
+
(_this$session4 = this.session) === null || _this$session4 === void 0 || (_this$session4$comple = _this$session4.completePayment) === null || _this$session4$comple === void 0 || _this$session4$comple.call(_this$session4, payStatus[status]);
|
|
405
508
|
}
|
|
406
509
|
}, {
|
|
407
510
|
key: "initApplePaySession",
|
|
408
511
|
value: function () {
|
|
409
512
|
var _initApplePaySession = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
410
|
-
var _this$
|
|
513
|
+
var _this$logger12, _this$parseData3, _this$logger11, _ref4, recurringInfo, version, _this$logger13;
|
|
411
514
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
412
515
|
while (1) switch (_context5.prev = _context5.next) {
|
|
413
516
|
case 0:
|
|
@@ -422,7 +525,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
422
525
|
_context5.next = 7;
|
|
423
526
|
break;
|
|
424
527
|
}
|
|
425
|
-
(_this$
|
|
528
|
+
(_this$logger11 = this.logger) === null || _this$logger11 === void 0 || _this$logger11.logError({
|
|
426
529
|
title: 'a3753.b103030.c386485.d507448'
|
|
427
530
|
});
|
|
428
531
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
@@ -430,7 +533,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
430
533
|
errorCode: APPLEPAYERRORENUM.APPLE_PAY_MISSING_DATA
|
|
431
534
|
}));
|
|
432
535
|
case 7:
|
|
433
|
-
(_this$
|
|
536
|
+
(_this$logger12 = this.logger) === null || _this$logger12 === void 0 || _this$logger12.logInfo({
|
|
434
537
|
title: 'a3753.b103030.c386485.d507459'
|
|
435
538
|
});
|
|
436
539
|
_context5.next = 10;
|
|
@@ -456,7 +559,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
456
559
|
case 19:
|
|
457
560
|
_context5.prev = 19;
|
|
458
561
|
_context5.t0 = _context5["catch"](0);
|
|
459
|
-
(_this$
|
|
562
|
+
(_this$logger13 = this.logger) === null || _this$logger13 === void 0 || _this$logger13.logError({
|
|
460
563
|
title: 'a3753.b103030.c386485.d507471'
|
|
461
564
|
});
|
|
462
565
|
return _context5.abrupt("return", Promise.reject({
|
|
@@ -477,9 +580,9 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
477
580
|
key: "abortSession",
|
|
478
581
|
value: function abortSession() {
|
|
479
582
|
try {
|
|
480
|
-
var _this$session$abort, _this$
|
|
583
|
+
var _this$session$abort, _this$session5;
|
|
481
584
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
482
|
-
this.session && ((_this$session$abort = (_this$
|
|
585
|
+
this.session && ((_this$session$abort = (_this$session5 = this.session).abort) === null || _this$session$abort === void 0 ? void 0 : _this$session$abort.call(_this$session5));
|
|
483
586
|
} catch (e) {
|
|
484
587
|
console.error('abortPaySession error', e);
|
|
485
588
|
} finally {
|
|
@@ -498,13 +601,13 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
498
601
|
extendInfo = _ref5.extendInfo;
|
|
499
602
|
var request = {
|
|
500
603
|
countryCode: merchantInfo === null || merchantInfo === void 0 ? void 0 : merchantInfo.registeredCountry,
|
|
501
|
-
currencyCode: paymentAmount === null || paymentAmount === void 0 ? void 0 : paymentAmount.currency,
|
|
604
|
+
currencyCode: this.merchantCurrency || (paymentAmount === null || paymentAmount === void 0 ? void 0 : paymentAmount.currency),
|
|
502
605
|
merchantCapabilities: extendInfo === null || extendInfo === void 0 ? void 0 : extendInfo.merchantCapabilities,
|
|
503
606
|
supportedNetworks: extendInfo === null || extendInfo === void 0 ? void 0 : extendInfo.supportedNetworks,
|
|
504
607
|
total: {
|
|
505
608
|
label: merchantInfo === null || merchantInfo === void 0 ? void 0 : merchantInfo.merchantName,
|
|
506
609
|
type: 'final',
|
|
507
|
-
amount: paymentAmount === null || paymentAmount === void 0 ? void 0 : paymentAmount.value
|
|
610
|
+
amount: this.merchantAmount || (paymentAmount === null || paymentAmount === void 0 ? void 0 : paymentAmount.value)
|
|
508
611
|
},
|
|
509
612
|
requiredBillingContactFields: extendInfo === null || extendInfo === void 0 ? void 0 : extendInfo.requiredBillingContactFields,
|
|
510
613
|
requiredShippingContactFields: extendInfo === null || extendInfo === void 0 ? void 0 : extendInfo.requiredShippingContactFields
|
package/esm/tsdoc-metadata.json
CHANGED
package/esm/types/index.d.ts
CHANGED
|
@@ -573,14 +573,9 @@ export interface CashierSubmitPayRequest {
|
|
|
573
573
|
category?: string;
|
|
574
574
|
};
|
|
575
575
|
shipping?: import('../core/component/element/type').CKPShipping;
|
|
576
|
-
}
|
|
577
|
-
export interface CashierSubmitPayRequest {
|
|
578
|
-
paymentMethodType?: string;
|
|
579
|
-
paymentFactors?: Record<string, string>;
|
|
580
|
-
verifyFactors?: Record<string, string>;
|
|
581
|
-
paymentSessionData: string;
|
|
582
|
-
paymentSessionConfig?: any;
|
|
583
576
|
extParams?: any;
|
|
577
|
+
/** 支付金额 */
|
|
578
|
+
paymentAmount?: Pick<IAmount, 'amount' | 'currency'>;
|
|
584
579
|
}
|
|
585
580
|
export interface CashierSdkActionQueryResult {
|
|
586
581
|
supportedLanguages?: any[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
2
|
+
/**
|
|
3
|
+
* 带超时的异步执行,始终清理定时器避免 unhandled promise rejection。
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 要执行的异步函数
|
|
6
|
+
* @param timeoutMs - 超时时间(毫秒),默认 15000
|
|
7
|
+
* @returns result 为 fn 的返回值(超时时为 undefined),timedOut 表示是否因超时返回
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeWithTimeout<T>(fn: () => Promise<T>, timeoutMs?: number): Promise<{
|
|
10
|
+
result: T | undefined;
|
|
11
|
+
timedOut: boolean;
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
+
export var BEFORE_CONFIRM_TIMEOUT_MS = 15000;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 带超时的异步执行,始终清理定时器避免 unhandled promise rejection。
|
|
9
|
+
*
|
|
10
|
+
* @param fn - 要执行的异步函数
|
|
11
|
+
* @param timeoutMs - 超时时间(毫秒),默认 15000
|
|
12
|
+
* @returns result 为 fn 的返回值(超时时为 undefined),timedOut 表示是否因超时返回
|
|
13
|
+
*/
|
|
14
|
+
export function executeWithTimeout(_x) {
|
|
15
|
+
return _executeWithTimeout.apply(this, arguments);
|
|
16
|
+
}
|
|
17
|
+
function _executeWithTimeout() {
|
|
18
|
+
_executeWithTimeout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(fn) {
|
|
19
|
+
var timeoutMs,
|
|
20
|
+
timerId,
|
|
21
|
+
timeoutPromise,
|
|
22
|
+
result,
|
|
23
|
+
isTimeout,
|
|
24
|
+
_args = arguments;
|
|
25
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
26
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27
|
+
case 0:
|
|
28
|
+
timeoutMs = _args.length > 1 && _args[1] !== undefined ? _args[1] : BEFORE_CONFIRM_TIMEOUT_MS;
|
|
29
|
+
timeoutPromise = new Promise(function (_, reject) {
|
|
30
|
+
timerId = setTimeout(function () {
|
|
31
|
+
return reject(new Error('timed out'));
|
|
32
|
+
}, timeoutMs);
|
|
33
|
+
});
|
|
34
|
+
_context.prev = 2;
|
|
35
|
+
_context.next = 5;
|
|
36
|
+
return Promise.race([fn(), timeoutPromise]);
|
|
37
|
+
case 5:
|
|
38
|
+
result = _context.sent;
|
|
39
|
+
return _context.abrupt("return", {
|
|
40
|
+
result: result,
|
|
41
|
+
timedOut: false
|
|
42
|
+
});
|
|
43
|
+
case 9:
|
|
44
|
+
_context.prev = 9;
|
|
45
|
+
_context.t0 = _context["catch"](2);
|
|
46
|
+
isTimeout = _context.t0 instanceof Error && _context.t0.message === 'timed out';
|
|
47
|
+
if (!isTimeout) {
|
|
48
|
+
_context.next = 14;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
return _context.abrupt("return", {
|
|
52
|
+
result: undefined,
|
|
53
|
+
timedOut: true
|
|
54
|
+
});
|
|
55
|
+
case 14:
|
|
56
|
+
throw _context.t0;
|
|
57
|
+
case 15:
|
|
58
|
+
_context.prev = 15;
|
|
59
|
+
clearTimeout(timerId);
|
|
60
|
+
return _context.finish(15);
|
|
61
|
+
case 18:
|
|
62
|
+
case "end":
|
|
63
|
+
return _context.stop();
|
|
64
|
+
}
|
|
65
|
+
}, _callee, null, [[2, 9, 15, 18]]);
|
|
66
|
+
}));
|
|
67
|
+
return _executeWithTimeout.apply(this, arguments);
|
|
68
|
+
}
|
package/esm/util/spm-map.d.ts
CHANGED
|
@@ -208,4 +208,10 @@ export declare const SPM_MAP: {
|
|
|
208
208
|
'Abnormal params recurringInfo': string;
|
|
209
209
|
'Payment processing but user dismissed the sheet': string;
|
|
210
210
|
'User dismissed the sheet': string;
|
|
211
|
+
sdk_before_confirm_start: string;
|
|
212
|
+
sdk_before_confirm_success: string;
|
|
213
|
+
sdk_before_confirm_abort: string;
|
|
214
|
+
sdk_before_confirm_error: string;
|
|
215
|
+
sdk_before_confirm_timeout: string;
|
|
216
|
+
sdk_before_confirm_skip: string;
|
|
211
217
|
};
|
package/esm/util/spm-map.js
CHANGED
|
@@ -198,5 +198,11 @@ export var SPM_MAP = _objectSpread({
|
|
|
198
198
|
'Abnormal params paymentSessionFactor': 'a3753.b101271.c388189.d518377',
|
|
199
199
|
'Abnormal params recurringInfo': 'a3753.b101271.c388189.d518377',
|
|
200
200
|
'Payment processing but user dismissed the sheet': 'a3753.b101271.c388189.d518377',
|
|
201
|
-
'User dismissed the sheet': 'a3753.b101271.c388189.d518377'
|
|
201
|
+
'User dismissed the sheet': 'a3753.b101271.c388189.d518377',
|
|
202
|
+
sdk_before_confirm_start: 'a3753.b204577.c480929',
|
|
203
|
+
sdk_before_confirm_success: 'a3753.b204577.c480930',
|
|
204
|
+
sdk_before_confirm_abort: 'a3753.b204577.c480931',
|
|
205
|
+
sdk_before_confirm_error: 'a3753.b204577.c480932',
|
|
206
|
+
sdk_before_confirm_timeout: 'a3753.b204577.c480933',
|
|
207
|
+
sdk_before_confirm_skip: 'a3753.b204577.c480934'
|
|
202
208
|
}, ELEMENT_SPM_MAP);
|