merchi_cart 1.4.4 → 1.4.5

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.
@@ -31,6 +31,7 @@ import { makeJob } from './utilities/job';
31
31
  import { makeProduct } from './utilities/product';
32
32
  import { getSavedCheckoutCustomer, saveCheckoutAddress } from './utilities/local_storage';
33
33
  import { makeUser } from './utilities/user';
34
+ import { persistTestCheckoutFlag, readTestCheckoutFlag } from './utilities/test_checkout';
34
35
  import { jsx as _jsx } from "react/jsx-runtime";
35
36
  var CartContext = /*#__PURE__*/createContext({
36
37
  cart: {},
@@ -499,48 +500,66 @@ var CartProvider = function CartProvider(_ref) {
499
500
  }
500
501
  function _createCartAndCookie() {
501
502
  _createCartAndCookie = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(callback) {
502
- var _cart, _cartJson;
503
+ var isTest, _cart, created, _cartJson;
503
504
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
504
505
  while (1) switch (_context2.prev = _context2.next) {
505
506
  case 0:
506
507
  setFetchingCart(true);
507
508
  _context2.prev = 1;
509
+ isTest = readTestCheckoutFlag();
508
510
  _cart = makeCart({
509
511
  domain: {
510
512
  id: domainId
511
- }
513
+ },
514
+ isTest: isTest
512
515
  }, true);
513
- _context2.next = 5;
516
+ if (!isTest) {
517
+ _context2.next = 11;
518
+ break;
519
+ }
520
+ _context2.next = 7;
521
+ return merchi.authenticatedFetch('/carts/', {
522
+ method: 'POST',
523
+ body: _cart.toFormData(),
524
+ query: [['embed', JSON.stringify(cartEmbed)], ['skip_rights', 'y'], ['is_test', 'true']]
525
+ });
526
+ case 7:
527
+ created = _context2.sent;
528
+ _cart.fromJson(created.cart);
529
+ _context2.next = 13;
530
+ break;
531
+ case 11:
532
+ _context2.next = 13;
514
533
  return _cart.create({
515
534
  embed: cartEmbed
516
535
  });
517
- case 5:
518
- _context2.next = 7;
536
+ case 13:
537
+ _context2.next = 15;
519
538
  return _cart.toJson();
520
- case 7:
539
+ case 15:
521
540
  _cartJson = _context2.sent;
522
- if (domainId) setCartCookie(Number(domainId), _cartJson, undefined);
523
- _context2.next = 11;
541
+ if (domainId) setCartCookie(Number(domainId), _cartJson, undefined, isTest);
542
+ _context2.next = 19;
524
543
  return attachSavedClientIfNeeded(_cartJson);
525
- case 11:
544
+ case 19:
526
545
  _cartJson = _context2.sent;
527
546
  setCart(_objectSpread({}, _cartJson));
528
547
  if (callback) callback();
529
- _context2.next = 19;
548
+ _context2.next = 27;
530
549
  break;
531
- case 16:
532
- _context2.prev = 16;
550
+ case 24:
551
+ _context2.prev = 24;
533
552
  _context2.t0 = _context2["catch"](1);
534
553
  alertError(_context2.t0.errorMessage || _context2.t0.message || 'Unable to fetch cart.');
535
- case 19:
536
- _context2.prev = 19;
554
+ case 27:
555
+ _context2.prev = 27;
537
556
  setFetchingCart(false);
538
- return _context2.finish(19);
539
- case 22:
557
+ return _context2.finish(27);
558
+ case 30:
540
559
  case "end":
541
560
  return _context2.stop();
542
561
  }
543
- }, _callee2, null, [[1, 16, 19, 22]]);
562
+ }, _callee2, null, [[1, 24, 27, 30]]);
544
563
  }));
545
564
  return _createCartAndCookie.apply(this, arguments);
546
565
  }
@@ -549,7 +568,7 @@ var CartProvider = function CartProvider(_ref) {
549
568
  }
550
569
  function _getCart() {
551
570
  _getCart = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(cartIdAndToken) {
552
- var id, _cart2, _cartJson2;
571
+ var id, _cart2, _cartJson2, isTest;
553
572
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
554
573
  while (1) switch (_context3.prev = _context3.next) {
555
574
  case 0:
@@ -567,37 +586,47 @@ var CartProvider = function CartProvider(_ref) {
567
586
  return _cart2.toJson();
568
587
  case 9:
569
588
  _cartJson2 = _context3.sent;
570
- if (!stripeIsValidAndActive(_cartJson2)) {
571
- _context3.next = 17;
589
+ isTest = readTestCheckoutFlag();
590
+ if (!(Boolean(_cartJson2.isTest) !== isTest)) {
591
+ _context3.next = 15;
592
+ break;
593
+ }
594
+ _context3.next = 14;
595
+ return createCartAndCookie();
596
+ case 14:
597
+ return _context3.abrupt("return");
598
+ case 15:
599
+ if (!(stripeIsValidAndActive(_cartJson2) || isTest)) {
600
+ _context3.next = 22;
572
601
  break;
573
602
  }
574
- _context3.next = 13;
603
+ _context3.next = 18;
575
604
  return attachSavedClientIfNeeded(_cartJson2);
576
- case 13:
605
+ case 18:
577
606
  _cartJson2 = _context3.sent;
578
607
  setCart(_objectSpread({}, _cartJson2));
579
- _context3.next = 19;
608
+ _context3.next = 24;
580
609
  break;
581
- case 17:
610
+ case 22:
582
611
  console.error("MErhci cart error: Stripe payment " + "options have not been correctly set up. " + "Check the company profile payment options tab " + "to set and edit stripe payment options.");
583
612
  setCartSettingsInvalid(true);
584
- case 19:
585
- _context3.next = 25;
613
+ case 24:
614
+ _context3.next = 30;
586
615
  break;
587
- case 21:
588
- _context3.prev = 21;
616
+ case 26:
617
+ _context3.prev = 26;
589
618
  _context3.t0 = _context3["catch"](3);
590
- _context3.next = 25;
619
+ _context3.next = 30;
591
620
  return createCartAndCookie();
592
- case 25:
593
- _context3.prev = 25;
621
+ case 30:
622
+ _context3.prev = 30;
594
623
  setFetchingCart(false);
595
- return _context3.finish(25);
596
- case 28:
624
+ return _context3.finish(30);
625
+ case 33:
597
626
  case "end":
598
627
  return _context3.stop();
599
628
  }
600
- }, _callee3, null, [[3, 21, 25, 28]]);
629
+ }, _callee3, null, [[3, 26, 30, 33]]);
601
630
  }));
602
631
  return _getCart.apply(this, arguments);
603
632
  }
@@ -974,6 +1003,7 @@ var CartProvider = function CartProvider(_ref) {
974
1003
  window.createCartAndCookie = createCartAndCookie;
975
1004
  }
976
1005
  useEffect(function () {
1006
+ persistTestCheckoutFlag();
977
1007
  if (domainId) actionGetMerchiCart();
978
1008
  if (domainId && includeTheme) actionFetchTheme();
979
1009
  }, [domainId]);
@@ -12,7 +12,7 @@ import * as React from 'react';
12
12
  import { useEffect, useState } from 'react';
13
13
  import { ButtonPay } from '../buttons';
14
14
  import FormStripeCardFields from './StripeCardFields';
15
- import { stripeCardFormSubmit, stripeInitPromise, stripePaymentButtonSubmit } from './actions';
15
+ import { fetchTestPublishableKey, stripeCardFormSubmit, stripeInitPromise, stripePaymentButtonSubmit } from './actions';
16
16
  import { companyStripePubKeyOrTestPubKey } from './utils';
17
17
  import { useCartContext } from '../CartProvider';
18
18
  import { tabIdPaymentSuccess } from '../utilities/tabs';
@@ -49,6 +49,7 @@ function StripeCardForm() {
49
49
  error = _useState2[0],
50
50
  setError = _useState2[1];
51
51
  var company = domain.company;
52
+ var isTestCheckout = Boolean(cart.isTest);
52
53
  var hasCompanyPubKey = Boolean(company.isStripeValid && companyStripePubKeyOrTestPubKey(company));
53
54
  var companyPubKey = hasCompanyPubKey ? companyStripePubKeyOrTestPubKey(company) : '';
54
55
  var canUseConnect = !!company.stripeAccountId;
@@ -137,15 +138,21 @@ function StripeCardForm() {
137
138
  }));
138
139
  return _doStripePaymentRequestForButton.apply(this, arguments);
139
140
  }
140
- var _useState7 = useState(companyPubKey),
141
+ var _useState7 = useState(isTestCheckout ? '' : companyPubKey),
141
142
  _useState8 = _slicedToArray(_useState7, 2),
142
143
  stripePublicKey = _useState8[0],
143
144
  setStripePublicKey = _useState8[1];
144
145
  useEffect(function () {
146
+ if (isTestCheckout) {
147
+ fetchTestPublishableKey(url).then(setStripePublicKey)["catch"](function () {
148
+ return setStripePublicKey('');
149
+ });
150
+ return;
151
+ }
145
152
  if (!stripePublicKey && canUseConnect) stripeInitPromise(url).then(setStripePublicKey);
146
- }, [stripePublicKey, canUseConnect]);
153
+ }, [stripePublicKey, canUseConnect, isTestCheckout, url]);
147
154
  return /*#__PURE__*/_jsxs(_Fragment, {
148
- children: [company.isTesting && badgeTestMode, /*#__PURE__*/_jsx(FormStripeCardFields, {
155
+ children: [!isTestCheckout && company.isTesting && badgeTestMode, /*#__PURE__*/_jsx(FormStripeCardFields, {
149
156
  doStripePayment: doStripePayment,
150
157
  doStripePaymentRequestForButton: doStripePaymentRequestForButton,
151
158
  cart: cart,
@@ -1,33 +1,142 @@
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
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
1
11
  import * as React from 'react';
12
+ import { useEffect, useState } from 'react';
2
13
  import { StripePaymentForm, StripePaymentGate } from 'merchi_invoice';
3
14
  import LegacyStripeCardForm from './LegacyStripeCardForm';
15
+ import { completeTestPayment, fetchTestPublishableKey } from './actions';
4
16
  import { useCartContext } from '../CartProvider';
5
17
  import { tabIdPaymentSuccess } from '../utilities/tabs';
18
+ import { TEST_CARD_NUMBER } from '../utilities/test_checkout';
6
19
  import { jsx as _jsx } from "react/jsx-runtime";
20
+ import { jsxs as _jsxs } from "react/jsx-runtime";
21
+ import { Fragment as _Fragment } from "react/jsx-runtime";
22
+ var testCheckoutHint = /*#__PURE__*/_jsxs("div", {
23
+ style: {
24
+ marginBottom: '12px'
25
+ },
26
+ children: [/*#__PURE__*/_jsx("div", {
27
+ style: {
28
+ color: 'red',
29
+ fontWeight: 600
30
+ },
31
+ children: "Test checkout"
32
+ }), /*#__PURE__*/_jsxs("p", {
33
+ style: {
34
+ margin: '4px 0 0',
35
+ fontSize: '13px'
36
+ },
37
+ children: ["No real charge. Use card ", TEST_CARD_NUMBER, ", any future expiry, any CVC, any ZIP."]
38
+ })]
39
+ });
7
40
  export default function StripeCardForm() {
8
41
  var _useCartContext = useCartContext(),
9
42
  alertError = _useCartContext.alertError,
10
43
  apiUrl = _useCartContext.apiUrl,
11
44
  cart = _useCartContext.cart,
45
+ classNameBtnPay = _useCartContext.classNameBtnPay,
12
46
  setActiveTabIndex = _useCartContext.setActiveTabIndex,
13
47
  setInvoiceJson = _useCartContext.setInvoiceJson;
14
- return /*#__PURE__*/_jsx(StripePaymentGate, {
15
- engine: cart.stripePaymentEngine,
16
- apiUrl: apiUrl || 'https://api.merchi.co/v6/',
17
- resource: "cart",
18
- resourceId: cart.id,
19
- resourceToken: cart.token || cart.cartToken,
20
- legacy: /*#__PURE__*/_jsx(LegacyStripeCardForm, {}),
21
- children: /*#__PURE__*/_jsx(StripePaymentForm, {
22
- apiUrl: apiUrl || 'https://api.merchi.co/v6/',
48
+ var isTestCheckout = Boolean(cart.isTest);
49
+ var url = apiUrl || 'https://api.merchi.co/v6/';
50
+ var _useState = useState(false),
51
+ _useState2 = _slicedToArray(_useState, 2),
52
+ testKeyMissing = _useState2[0],
53
+ setTestKeyMissing = _useState2[1];
54
+ var _useState3 = useState(false),
55
+ _useState4 = _slicedToArray(_useState3, 2),
56
+ loadingTestPayment = _useState4[0],
57
+ setLoadingTestPayment = _useState4[1];
58
+ useEffect(function () {
59
+ if (!isTestCheckout) {
60
+ setTestKeyMissing(false);
61
+ return;
62
+ }
63
+ fetchTestPublishableKey(url).then(function () {
64
+ return setTestKeyMissing(false);
65
+ })["catch"](function () {
66
+ return setTestKeyMissing(true);
67
+ });
68
+ }, [isTestCheckout, url]);
69
+ function doCompleteTestPayment() {
70
+ return _doCompleteTestPayment.apply(this, arguments);
71
+ }
72
+ function _doCompleteTestPayment() {
73
+ _doCompleteTestPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
74
+ var invoice;
75
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
76
+ while (1) switch (_context.prev = _context.next) {
77
+ case 0:
78
+ setLoadingTestPayment(true);
79
+ _context.prev = 1;
80
+ _context.next = 4;
81
+ return completeTestPayment(url, cart);
82
+ case 4:
83
+ invoice = _context.sent;
84
+ setInvoiceJson(invoice);
85
+ setActiveTabIndex(tabIdPaymentSuccess);
86
+ _context.next = 12;
87
+ break;
88
+ case 9:
89
+ _context.prev = 9;
90
+ _context.t0 = _context["catch"](1);
91
+ alertError(_context.t0.message);
92
+ case 12:
93
+ _context.prev = 12;
94
+ setLoadingTestPayment(false);
95
+ return _context.finish(12);
96
+ case 15:
97
+ case "end":
98
+ return _context.stop();
99
+ }
100
+ }, _callee, null, [[1, 9, 12, 15]]);
101
+ }));
102
+ return _doCompleteTestPayment.apply(this, arguments);
103
+ }
104
+ if (isTestCheckout && testKeyMissing) {
105
+ return /*#__PURE__*/_jsxs(_Fragment, {
106
+ children: [testCheckoutHint, /*#__PURE__*/_jsx("p", {
107
+ style: {
108
+ fontSize: '13px',
109
+ marginBottom: '12px'
110
+ },
111
+ children: "Stripe test keys are not configured. Complete this as a test order without a card."
112
+ }), /*#__PURE__*/_jsx("button", {
113
+ type: "button",
114
+ className: classNameBtnPay,
115
+ disabled: loadingTestPayment,
116
+ onClick: doCompleteTestPayment,
117
+ children: loadingTestPayment ? 'Completing…' : 'Complete test order'
118
+ })]
119
+ });
120
+ }
121
+ return /*#__PURE__*/_jsxs(_Fragment, {
122
+ children: [isTestCheckout && testCheckoutHint, /*#__PURE__*/_jsx(StripePaymentGate, {
123
+ engine: isTestCheckout ? 'legacy' : cart.stripePaymentEngine,
124
+ apiUrl: url,
23
125
  resource: "cart",
24
126
  resourceId: cart.id,
25
127
  resourceToken: cart.token || cart.cartToken,
26
- onError: alertError,
27
- onSuccess: function onSuccess(invoice) {
28
- setInvoiceJson(invoice);
29
- setActiveTabIndex(tabIdPaymentSuccess);
30
- }
31
- })
128
+ legacy: /*#__PURE__*/_jsx(LegacyStripeCardForm, {}),
129
+ children: /*#__PURE__*/_jsx(StripePaymentForm, {
130
+ apiUrl: url,
131
+ resource: "cart",
132
+ resourceId: cart.id,
133
+ resourceToken: cart.token || cart.cartToken,
134
+ onError: alertError,
135
+ onSuccess: function onSuccess(invoice) {
136
+ setInvoiceJson(invoice);
137
+ setActiveTabIndex(tabIdPaymentSuccess);
138
+ }
139
+ })
140
+ })]
32
141
  });
33
142
  }