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.
- package/esm/CartProvider.js +64 -34
- package/esm/stripe/LegacyStripeCardForm.js +11 -4
- package/esm/stripe/StripeCardForm.js +124 -15
- package/esm/stripe/actions.js +161 -57
- package/esm/stripe/actions.test.js +132 -0
- package/esm/utilities/cookie.js +20 -17
- package/esm/utilities/index.js +1 -0
- package/esm/utilities/test_checkout.js +25 -0
- package/esm/utilities/test_checkout.test.js +31 -0
- package/lib/CartProvider.js +64 -34
- package/lib/stripe/LegacyStripeCardForm.js +10 -3
- package/lib/stripe/StripeCardForm.js +122 -16
- package/lib/stripe/actions.d.ts +2 -0
- package/lib/stripe/actions.js +163 -57
- package/lib/stripe/actions.test.d.ts +1 -0
- package/lib/utilities/cookie.d.ts +3 -3
- package/lib/utilities/cookie.js +20 -17
- package/lib/utilities/index.d.ts +1 -0
- package/lib/utilities/index.js +11 -0
- package/lib/utilities/test_checkout.d.ts +6 -0
- package/lib/utilities/test_checkout.js +34 -0
- package/lib/utilities/test_checkout.test.d.ts +1 -0
- package/package.json +6 -3
- package/src/CartProvider.tsx +25 -4
- package/src/stripe/LegacyStripeCardForm.tsx +9 -3
- package/src/stripe/StripeCardForm.tsx +92 -8
- package/src/stripe/actions.test.ts +50 -0
- package/src/stripe/actions.ts +41 -0
- package/src/utilities/cookie.ts +9 -6
- package/src/utilities/index.ts +1 -0
- package/src/utilities/test_checkout.test.ts +39 -0
- package/src/utilities/test_checkout.ts +27 -0
package/esm/CartProvider.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
518
|
-
_context2.next =
|
|
536
|
+
case 13:
|
|
537
|
+
_context2.next = 15;
|
|
519
538
|
return _cart.toJson();
|
|
520
|
-
case
|
|
539
|
+
case 15:
|
|
521
540
|
_cartJson = _context2.sent;
|
|
522
|
-
if (domainId) setCartCookie(Number(domainId), _cartJson, undefined);
|
|
523
|
-
_context2.next =
|
|
541
|
+
if (domainId) setCartCookie(Number(domainId), _cartJson, undefined, isTest);
|
|
542
|
+
_context2.next = 19;
|
|
524
543
|
return attachSavedClientIfNeeded(_cartJson);
|
|
525
|
-
case
|
|
544
|
+
case 19:
|
|
526
545
|
_cartJson = _context2.sent;
|
|
527
546
|
setCart(_objectSpread({}, _cartJson));
|
|
528
547
|
if (callback) callback();
|
|
529
|
-
_context2.next =
|
|
548
|
+
_context2.next = 27;
|
|
530
549
|
break;
|
|
531
|
-
case
|
|
532
|
-
_context2.prev =
|
|
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
|
|
536
|
-
_context2.prev =
|
|
554
|
+
case 27:
|
|
555
|
+
_context2.prev = 27;
|
|
537
556
|
setFetchingCart(false);
|
|
538
|
-
return _context2.finish(
|
|
539
|
-
case
|
|
557
|
+
return _context2.finish(27);
|
|
558
|
+
case 30:
|
|
540
559
|
case "end":
|
|
541
560
|
return _context2.stop();
|
|
542
561
|
}
|
|
543
|
-
}, _callee2, null, [[1,
|
|
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
|
-
|
|
571
|
-
|
|
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 =
|
|
603
|
+
_context3.next = 18;
|
|
575
604
|
return attachSavedClientIfNeeded(_cartJson2);
|
|
576
|
-
case
|
|
605
|
+
case 18:
|
|
577
606
|
_cartJson2 = _context3.sent;
|
|
578
607
|
setCart(_objectSpread({}, _cartJson2));
|
|
579
|
-
_context3.next =
|
|
608
|
+
_context3.next = 24;
|
|
580
609
|
break;
|
|
581
|
-
case
|
|
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
|
|
585
|
-
_context3.next =
|
|
613
|
+
case 24:
|
|
614
|
+
_context3.next = 30;
|
|
586
615
|
break;
|
|
587
|
-
case
|
|
588
|
-
_context3.prev =
|
|
616
|
+
case 26:
|
|
617
|
+
_context3.prev = 26;
|
|
589
618
|
_context3.t0 = _context3["catch"](3);
|
|
590
|
-
_context3.next =
|
|
619
|
+
_context3.next = 30;
|
|
591
620
|
return createCartAndCookie();
|
|
592
|
-
case
|
|
593
|
-
_context3.prev =
|
|
621
|
+
case 30:
|
|
622
|
+
_context3.prev = 30;
|
|
594
623
|
setFetchingCart(false);
|
|
595
|
-
return _context3.finish(
|
|
596
|
-
case
|
|
624
|
+
return _context3.finish(30);
|
|
625
|
+
case 33:
|
|
597
626
|
case "end":
|
|
598
627
|
return _context3.stop();
|
|
599
628
|
}
|
|
600
|
-
}, _callee3, null, [[3,
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
}
|