@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.
@@ -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$logger3;
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 = 14;
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
- _context3.next = 9;
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 9:
390
+ case 41:
301
391
  res = _context3.sent;
302
392
  _this.setPayStatus(res);
303
393
  resolve(res);
304
- _context3.next = 16;
394
+ _context3.next = 48;
305
395
  break;
306
- case 14:
307
- (_this$logger3 = _this.logger) === null || _this$logger3 === void 0 || _this$logger3.logError({
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 16:
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$logger4;
324
- (_this$logger4 = _this.logger) === null || _this$logger4 === void 0 || _this$logger4.logError({
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$logger5;
329
- (_this$logger5 = _this.logger) === null || _this$logger5 === void 0 || _this$logger5.logInfo({
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$session2, _this$session2$comple;
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$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, payStatus[status]);
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$logger7, _this$parseData3, _this$logger6, _ref4, recurringInfo, version, _this$logger8;
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$logger6 = this.logger) === null || _this$logger6 === void 0 || _this$logger6.logError({
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$logger7 = this.logger) === null || _this$logger7 === void 0 || _this$logger7.logInfo({
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$logger8 = this.logger) === null || _this$logger8 === void 0 || _this$logger8.logError({
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$session3;
583
+ var _this$session$abort, _this$session5;
487
584
  this.paymentStatus = PAYMENT_STATUS.NORMAL;
488
- this.session && ((_this$session$abort = (_this$session3 = this.session).abort) === null || _this$session$abort === void 0 ? void 0 : _this$session$abort.call(_this$session3));
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 {
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alipay/ams-checkout",
3
- "version": "0.0.1781004142-dev.9",
3
+ "version": "0.0.1781669097-dev.0",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "exports": {