@alipay/ams-checkout 0.0.1781004142-dev.9 → 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/core/component/element/elementController/index.js +55 -62
- package/esm/core/component/element/elementProcessor/paymentProcessor.js +31 -35
- package/esm/modern/index.js +1 -1
- package/esm/plugin/component/channel.d.ts +7 -0
- package/esm/plugin/component/channel.js +121 -24
- package/esm/types/index.d.ts +2 -7
- package/esm/util/beforeConfirm.d.ts +12 -0
- package/esm/util/beforeConfirm.js +68 -0
- package/package.json +1 -1
|
@@ -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";
|
|
@@ -151,11 +154,16 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
151
154
|
* @description 支付状态,pending:支付中,normal:正常
|
|
152
155
|
*/
|
|
153
156
|
_defineProperty(this, "paymentStatus", void 0);
|
|
157
|
+
/**
|
|
158
|
+
* @description oncancel 原因标记,用于区分用户主动取消 vs 商户通过 onBeforeConfirm 中止
|
|
159
|
+
*/
|
|
160
|
+
_defineProperty(this, "cancelReason", null);
|
|
154
161
|
_defineProperty(this, "logger", void 0);
|
|
155
162
|
_defineProperty(this, "env", void 0);
|
|
156
163
|
_defineProperty(this, "shipping", void 0);
|
|
157
164
|
_defineProperty(this, "merchantAmount", void 0);
|
|
158
165
|
_defineProperty(this, "merchantCurrency", void 0);
|
|
166
|
+
_defineProperty(this, "onBeforeConfirm", void 0);
|
|
159
167
|
this.paymentSessionData = paymentSessionData;
|
|
160
168
|
this.parseData = parseData;
|
|
161
169
|
this.env = env;
|
|
@@ -164,7 +172,13 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
164
172
|
this.merchantAmount = merchantAmount;
|
|
165
173
|
this.merchantCurrency = merchantCurrency;
|
|
166
174
|
}
|
|
175
|
+
/** 设置商户 onBeforeConfirm 回调(展码链路使用) */
|
|
167
176
|
_createClass(ApplePaySdk, [{
|
|
177
|
+
key: "setOnBeforeConfirm",
|
|
178
|
+
value: function setOnBeforeConfirm(callback) {
|
|
179
|
+
this.onBeforeConfirm = callback;
|
|
180
|
+
}
|
|
181
|
+
}, {
|
|
168
182
|
key: "startPay",
|
|
169
183
|
value: function () {
|
|
170
184
|
var _startPay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
@@ -268,7 +282,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
268
282
|
}();
|
|
269
283
|
_this.session.onpaymentauthorized = /*#__PURE__*/function () {
|
|
270
284
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(event) {
|
|
271
|
-
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;
|
|
272
286
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
273
287
|
while (1) switch (_context3.prev = _context3.next) {
|
|
274
288
|
case 0:
|
|
@@ -282,7 +296,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
282
296
|
};
|
|
283
297
|
_event$payment = event === null || event === void 0 ? void 0 : event.payment, token = _event$payment.token, billingContact = _event$payment.billingContact, shippingContact = _event$payment.shippingContact;
|
|
284
298
|
if (!token) {
|
|
285
|
-
_context3.next =
|
|
299
|
+
_context3.next = 46;
|
|
286
300
|
break;
|
|
287
301
|
}
|
|
288
302
|
obj = {
|
|
@@ -295,24 +309,100 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
295
309
|
if (!isEmpty(requiredShippingContactFields) && shippingContact) {
|
|
296
310
|
obj['applePayShippingContact'] = JSON.stringify(shippingContact);
|
|
297
311
|
}
|
|
298
|
-
|
|
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;
|
|
299
389
|
return _this.submitPay(obj);
|
|
300
|
-
case
|
|
390
|
+
case 41:
|
|
301
391
|
res = _context3.sent;
|
|
302
392
|
_this.setPayStatus(res);
|
|
303
393
|
resolve(res);
|
|
304
|
-
_context3.next =
|
|
394
|
+
_context3.next = 48;
|
|
305
395
|
break;
|
|
306
|
-
case
|
|
307
|
-
(_this$
|
|
396
|
+
case 46:
|
|
397
|
+
(_this$logger8 = _this.logger) === null || _this$logger8 === void 0 || _this$logger8.logError({
|
|
308
398
|
title: 'a3753.b103030.c386485.d507486'
|
|
309
399
|
});
|
|
310
400
|
exception();
|
|
311
|
-
case
|
|
401
|
+
case 48:
|
|
312
402
|
case "end":
|
|
313
403
|
return _context3.stop();
|
|
314
404
|
}
|
|
315
|
-
}, _callee3);
|
|
405
|
+
}, _callee3, null, [[13, 31]]);
|
|
316
406
|
}));
|
|
317
407
|
return function (_x2) {
|
|
318
408
|
return _ref3.apply(this, arguments);
|
|
@@ -320,18 +410,20 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
320
410
|
}();
|
|
321
411
|
_this.session.oncancel = function () {
|
|
322
412
|
if (_this.paymentStatus === PAYMENT_STATUS.PENDING) {
|
|
323
|
-
var _this$
|
|
324
|
-
(_this$
|
|
413
|
+
var _this$logger9;
|
|
414
|
+
(_this$logger9 = _this.logger) === null || _this$logger9 === void 0 || _this$logger9.logError({
|
|
325
415
|
title: 'a3753.b103030.c386485.d507497'
|
|
326
416
|
});
|
|
327
417
|
} else {
|
|
328
|
-
var _this$
|
|
329
|
-
(_this$
|
|
418
|
+
var _this$logger10;
|
|
419
|
+
(_this$logger10 = _this.logger) === null || _this$logger10 === void 0 || _this$logger10.logInfo({
|
|
330
420
|
title: 'a3753.b103030.c386485.d507498'
|
|
331
421
|
});
|
|
332
422
|
}
|
|
423
|
+
// cancelReason === 'MERCHANT_ABORT': onBeforeConfirm 返回 false 或异常,由商户主动中止
|
|
424
|
+
// 其他:用户主动取消付款界面
|
|
333
425
|
reject({
|
|
334
|
-
errorCode: APPLEPAYERRORENUM.APPLE_PAY_CANCEL
|
|
426
|
+
errorCode: _this.cancelReason === 'MERCHANT_ABORT' ? 'MERCHANT_CONFIRM_ABORT' : APPLEPAYERRORENUM.APPLE_PAY_CANCEL
|
|
335
427
|
});
|
|
336
428
|
};
|
|
337
429
|
_this.session.begin();
|
|
@@ -351,7 +443,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
351
443
|
case 0:
|
|
352
444
|
_context4.prev = 0;
|
|
353
445
|
_context4.t0 = submitPayInfo;
|
|
354
|
-
_context4.t1 = {
|
|
446
|
+
_context4.t1 = _objectSpread({
|
|
355
447
|
paymentSessionConfig: (_this$parseData2 = this.parseData) === null || _this$parseData2 === void 0 ? void 0 : _this$parseData2.paymentSessionConfig,
|
|
356
448
|
paymentSessionData: this.paymentSessionData,
|
|
357
449
|
paymentFactors: params,
|
|
@@ -359,7 +451,12 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
359
451
|
paymentMethodType: 'APPLEPAY'
|
|
360
452
|
},
|
|
361
453
|
shipping: this.shipping
|
|
362
|
-
}
|
|
454
|
+
}, this.merchantAmount && this.merchantCurrency ? {
|
|
455
|
+
paymentAmount: {
|
|
456
|
+
amount: this.merchantAmount,
|
|
457
|
+
currency: this.merchantCurrency
|
|
458
|
+
}
|
|
459
|
+
} : {});
|
|
363
460
|
_context4.t2 = this.env;
|
|
364
461
|
_context4.next = 6;
|
|
365
462
|
return this.getDeviceId();
|
|
@@ -395,7 +492,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
395
492
|
}, {
|
|
396
493
|
key: "setPayStatus",
|
|
397
494
|
value: function setPayStatus(result) {
|
|
398
|
-
var _this$
|
|
495
|
+
var _this$session4, _this$session4$comple;
|
|
399
496
|
var payStatus = {
|
|
400
497
|
success: window.ApplePaySession.STATUS_SUCCESS,
|
|
401
498
|
fail: window.ApplePaySession.STATUS_FAILURE
|
|
@@ -407,13 +504,13 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
407
504
|
status = 'fail';
|
|
408
505
|
}
|
|
409
506
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
410
|
-
(_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]);
|
|
411
508
|
}
|
|
412
509
|
}, {
|
|
413
510
|
key: "initApplePaySession",
|
|
414
511
|
value: function () {
|
|
415
512
|
var _initApplePaySession = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
416
|
-
var _this$
|
|
513
|
+
var _this$logger12, _this$parseData3, _this$logger11, _ref4, recurringInfo, version, _this$logger13;
|
|
417
514
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
418
515
|
while (1) switch (_context5.prev = _context5.next) {
|
|
419
516
|
case 0:
|
|
@@ -428,7 +525,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
428
525
|
_context5.next = 7;
|
|
429
526
|
break;
|
|
430
527
|
}
|
|
431
|
-
(_this$
|
|
528
|
+
(_this$logger11 = this.logger) === null || _this$logger11 === void 0 || _this$logger11.logError({
|
|
432
529
|
title: 'a3753.b103030.c386485.d507448'
|
|
433
530
|
});
|
|
434
531
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
@@ -436,7 +533,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
436
533
|
errorCode: APPLEPAYERRORENUM.APPLE_PAY_MISSING_DATA
|
|
437
534
|
}));
|
|
438
535
|
case 7:
|
|
439
|
-
(_this$
|
|
536
|
+
(_this$logger12 = this.logger) === null || _this$logger12 === void 0 || _this$logger12.logInfo({
|
|
440
537
|
title: 'a3753.b103030.c386485.d507459'
|
|
441
538
|
});
|
|
442
539
|
_context5.next = 10;
|
|
@@ -462,7 +559,7 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
462
559
|
case 19:
|
|
463
560
|
_context5.prev = 19;
|
|
464
561
|
_context5.t0 = _context5["catch"](0);
|
|
465
|
-
(_this$
|
|
562
|
+
(_this$logger13 = this.logger) === null || _this$logger13 === void 0 || _this$logger13.logError({
|
|
466
563
|
title: 'a3753.b103030.c386485.d507471'
|
|
467
564
|
});
|
|
468
565
|
return _context5.abrupt("return", Promise.reject({
|
|
@@ -483,9 +580,9 @@ export var ApplePaySdk = /*#__PURE__*/function () {
|
|
|
483
580
|
key: "abortSession",
|
|
484
581
|
value: function abortSession() {
|
|
485
582
|
try {
|
|
486
|
-
var _this$session$abort, _this$
|
|
583
|
+
var _this$session$abort, _this$session5;
|
|
487
584
|
this.paymentStatus = PAYMENT_STATUS.NORMAL;
|
|
488
|
-
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));
|
|
489
586
|
} catch (e) {
|
|
490
587
|
console.error('abortPaySession error', e);
|
|
491
588
|
} finally {
|
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
|
+
}
|