swell-js 3.12.2 → 3.13.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/dist/api.js +2 -2
- package/dist/cache.js +2 -2
- package/dist/cart.js +1 -1
- package/dist/content.js +1 -1
- package/dist/cookie.js +1 -1
- package/dist/payment.js +132 -49
- package/dist/products.js +2 -2
- package/dist/settings.js +2 -2
- package/dist/utils/klarna.js +143 -0
- package/dist/utils/quickpay.js +1 -1
- package/dist/utils/stripe.js +1 -1
- package/package.json +1 -1
- package/src/payment.js +47 -10
- package/src/utils/klarna.js +104 -0
- package/test/page/components/sidebar/sidebar.js +1 -0
- package/test/page/containers/payment/klarna.js +101 -0
- package/test/page/containers/payment/payment.js +10 -0
- package/test/page/containers/payment/stripe.js +114 -19
package/dist/api.js
CHANGED
|
@@ -10,7 +10,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
|
|
11
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
12
|
|
|
13
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
14
14
|
|
|
15
15
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
16
16
|
|
|
@@ -246,7 +246,7 @@ function _request() {
|
|
|
246
246
|
|
|
247
247
|
if (typeof window !== 'undefined') {
|
|
248
248
|
window.swell = {
|
|
249
|
-
version: '3.
|
|
249
|
+
version: '3.13.0'
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
252
|
|
package/dist/cache.js
CHANGED
|
@@ -10,13 +10,13 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
|
|
11
11
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
12
12
|
|
|
13
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it
|
|
13
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
14
14
|
|
|
15
15
|
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); }
|
|
16
16
|
|
|
17
17
|
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; }
|
|
18
18
|
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
20
20
|
|
|
21
21
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
22
22
|
|
package/dist/cart.js
CHANGED
|
@@ -8,7 +8,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
8
8
|
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
|
|
11
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
12
12
|
|
|
13
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
14
14
|
|
package/dist/content.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
|
|
5
5
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
6
|
|
|
7
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
8
8
|
|
|
9
9
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
10
10
|
|
package/dist/cookie.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
|
|
5
5
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
6
|
|
|
7
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
8
8
|
|
|
9
9
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
10
10
|
|
package/dist/payment.js
CHANGED
|
@@ -8,11 +8,11 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
8
8
|
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
|
|
11
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
12
12
|
|
|
13
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
14
14
|
|
|
15
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it
|
|
15
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
16
16
|
|
|
17
17
|
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); }
|
|
18
18
|
|
|
@@ -48,6 +48,9 @@ var _require3 = require('./utils/quickpay'),
|
|
|
48
48
|
var _require4 = require('./utils/paysafecard'),
|
|
49
49
|
createPaysafecardPayment = _require4.createPaysafecardPayment;
|
|
50
50
|
|
|
51
|
+
var _require5 = require('./utils/klarna'),
|
|
52
|
+
createKlarnaSession = _require5.createKlarnaSession;
|
|
53
|
+
|
|
51
54
|
var LOADING_SCRIPTS = {};
|
|
52
55
|
var CARD_ELEMENTS = {};
|
|
53
56
|
var API = {};
|
|
@@ -611,7 +614,7 @@ function _stripeElements() {
|
|
|
611
614
|
case 0:
|
|
612
615
|
publishable_key = payMethods.card.publishable_key;
|
|
613
616
|
stripe = window.Stripe(publishable_key);
|
|
614
|
-
elements = stripe.elements();
|
|
617
|
+
elements = stripe.elements(params.config);
|
|
615
618
|
|
|
616
619
|
createElement = function createElement(type) {
|
|
617
620
|
var elementParams = get(params, "card[".concat(type, "]")) || params.card || params.ideal;
|
|
@@ -720,10 +723,11 @@ function _payPalButton() {
|
|
|
720
723
|
var payer = authorization.payer;
|
|
721
724
|
var shipping = get(authorization, 'purchase_units[0].shipping');
|
|
722
725
|
var authorizationID = get(authorization, 'purchase_units[0].payments.authorizations[0].id');
|
|
723
|
-
return cartApi.methods(request).update({
|
|
726
|
+
return cartApi.methods(request).update(_objectSpread(_objectSpread({}, !cart.account_logged_in && {
|
|
724
727
|
account: {
|
|
725
728
|
email: payer.email_address
|
|
726
|
-
}
|
|
729
|
+
}
|
|
730
|
+
}), {}, {
|
|
727
731
|
billing: {
|
|
728
732
|
method: 'paypal',
|
|
729
733
|
paypal: {
|
|
@@ -739,7 +743,7 @@ function _payPalButton() {
|
|
|
739
743
|
zip: shipping.address.postal_code,
|
|
740
744
|
country: shipping.address.country_code
|
|
741
745
|
}
|
|
742
|
-
});
|
|
746
|
+
}));
|
|
743
747
|
}).then(onSuccess)["catch"](onError);
|
|
744
748
|
}
|
|
745
749
|
}, onError).render(elementId || '#paypal-button');
|
|
@@ -846,7 +850,7 @@ function paymentTokenize(_x24, _x25, _x26, _x27) {
|
|
|
846
850
|
|
|
847
851
|
function _paymentTokenize() {
|
|
848
852
|
_paymentTokenize = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(request, params, payMethods, cart) {
|
|
849
|
-
var onError, stripe, paymentMethod, currency, amount, stripeCustomer, intent, _yield$stripe$confirm, paymentIntent, error, _intent, _yield$createIDealPay, _error, _paymentMethod, _currency, _amount, _intent2, publishable_key, _stripe, settings, _yield$createKlarnaSo, _error2, source, _publishable_key, _stripe2, _yield$createBanconta, _error3, _source, _intent3;
|
|
853
|
+
var onError, stripe, paymentMethod, currency, amount, stripeCustomer, intent, _yield$stripe$confirm, paymentIntent, error, _intent, _yield$createIDealPay, _error, _paymentMethod, _currency, _amount, _intent2, session, publishable_key, _stripe, settings, _yield$createKlarnaSo, _error2, source, _publishable_key, _stripe2, _yield$createBanconta, _error3, _source, _intent3;
|
|
850
854
|
|
|
851
855
|
return _regenerator["default"].wrap(function _callee13$(_context13) {
|
|
852
856
|
while (1) {
|
|
@@ -1015,7 +1019,7 @@ function _paymentTokenize() {
|
|
|
1015
1019
|
createQuickpayCard(methods(request).authorizeGateway)["catch"](onError);
|
|
1016
1020
|
|
|
1017
1021
|
case 48:
|
|
1018
|
-
_context13.next =
|
|
1022
|
+
_context13.next = 128;
|
|
1019
1023
|
break;
|
|
1020
1024
|
|
|
1021
1025
|
case 50:
|
|
@@ -1108,44 +1112,59 @@ function _paymentTokenize() {
|
|
|
1108
1112
|
return _context13.abrupt("return", _context13.t5);
|
|
1109
1113
|
|
|
1110
1114
|
case 75:
|
|
1111
|
-
_context13.next =
|
|
1115
|
+
_context13.next = 128;
|
|
1112
1116
|
break;
|
|
1113
1117
|
|
|
1114
1118
|
case 77:
|
|
1115
1119
|
if (!(params.klarna && payMethods.klarna)) {
|
|
1116
|
-
_context13.next =
|
|
1120
|
+
_context13.next = 104;
|
|
1117
1121
|
break;
|
|
1118
1122
|
}
|
|
1119
1123
|
|
|
1124
|
+
if (!(payMethods.klarna.gateway === 'klarna')) {
|
|
1125
|
+
_context13.next = 85;
|
|
1126
|
+
break;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
_context13.next = 81;
|
|
1130
|
+
return createKlarnaSession(cart, methods(request).createIntent)["catch"](function (err) {
|
|
1131
|
+
return onError(err);
|
|
1132
|
+
});
|
|
1133
|
+
|
|
1134
|
+
case 81:
|
|
1135
|
+
session = _context13.sent;
|
|
1136
|
+
return _context13.abrupt("return", session && window.location.replace(session.redirect_url));
|
|
1137
|
+
|
|
1138
|
+
case 85:
|
|
1120
1139
|
if (!(payMethods.card && payMethods.card.gateway === 'stripe')) {
|
|
1121
|
-
_context13.next =
|
|
1140
|
+
_context13.next = 102;
|
|
1122
1141
|
break;
|
|
1123
1142
|
}
|
|
1124
1143
|
|
|
1125
1144
|
if (window.Stripe) {
|
|
1126
|
-
_context13.next =
|
|
1145
|
+
_context13.next = 89;
|
|
1127
1146
|
break;
|
|
1128
1147
|
}
|
|
1129
1148
|
|
|
1130
|
-
_context13.next =
|
|
1149
|
+
_context13.next = 89;
|
|
1131
1150
|
return loadScript('stripe-js', 'https://js.stripe.com/v3/');
|
|
1132
1151
|
|
|
1133
|
-
case
|
|
1152
|
+
case 89:
|
|
1134
1153
|
publishable_key = payMethods.card.publishable_key;
|
|
1135
1154
|
_stripe = window.Stripe(publishable_key);
|
|
1136
1155
|
_context13.t6 = toSnake;
|
|
1137
|
-
_context13.next =
|
|
1156
|
+
_context13.next = 94;
|
|
1138
1157
|
return settingsApi.methods(request, options).get();
|
|
1139
1158
|
|
|
1140
|
-
case
|
|
1159
|
+
case 94:
|
|
1141
1160
|
_context13.t7 = _context13.sent;
|
|
1142
1161
|
settings = (0, _context13.t6)(_context13.t7);
|
|
1143
|
-
_context13.next =
|
|
1162
|
+
_context13.next = 98;
|
|
1144
1163
|
return createKlarnaSource(_stripe, _objectSpread(_objectSpread({}, cart), {}, {
|
|
1145
1164
|
settings: settings.store
|
|
1146
1165
|
}));
|
|
1147
1166
|
|
|
1148
|
-
case
|
|
1167
|
+
case 98:
|
|
1149
1168
|
_yield$createKlarnaSo = _context13.sent;
|
|
1150
1169
|
_error2 = _yield$createKlarnaSo.error;
|
|
1151
1170
|
source = _yield$createKlarnaSo.source;
|
|
@@ -1159,36 +1178,36 @@ function _paymentTokenize() {
|
|
|
1159
1178
|
return onError(err);
|
|
1160
1179
|
}));
|
|
1161
1180
|
|
|
1162
|
-
case
|
|
1163
|
-
_context13.next =
|
|
1181
|
+
case 102:
|
|
1182
|
+
_context13.next = 128;
|
|
1164
1183
|
break;
|
|
1165
1184
|
|
|
1166
|
-
case
|
|
1185
|
+
case 104:
|
|
1167
1186
|
if (!(params.bancontact && payMethods.bancontact)) {
|
|
1168
|
-
_context13.next =
|
|
1187
|
+
_context13.next = 119;
|
|
1169
1188
|
break;
|
|
1170
1189
|
}
|
|
1171
1190
|
|
|
1172
1191
|
if (!(payMethods.card && payMethods.card.gateway === 'stripe')) {
|
|
1173
|
-
_context13.next =
|
|
1192
|
+
_context13.next = 117;
|
|
1174
1193
|
break;
|
|
1175
1194
|
}
|
|
1176
1195
|
|
|
1177
1196
|
if (window.Stripe) {
|
|
1178
|
-
_context13.next =
|
|
1197
|
+
_context13.next = 109;
|
|
1179
1198
|
break;
|
|
1180
1199
|
}
|
|
1181
1200
|
|
|
1182
|
-
_context13.next =
|
|
1201
|
+
_context13.next = 109;
|
|
1183
1202
|
return loadScript('stripe-js', 'https://js.stripe.com/v3/');
|
|
1184
1203
|
|
|
1185
|
-
case
|
|
1204
|
+
case 109:
|
|
1186
1205
|
_publishable_key = payMethods.card.publishable_key;
|
|
1187
1206
|
_stripe2 = window.Stripe(_publishable_key);
|
|
1188
|
-
_context13.next =
|
|
1207
|
+
_context13.next = 113;
|
|
1189
1208
|
return createBancontactSource(_stripe2, cart);
|
|
1190
1209
|
|
|
1191
|
-
case
|
|
1210
|
+
case 113:
|
|
1192
1211
|
_yield$createBanconta = _context13.sent;
|
|
1193
1212
|
_error3 = _yield$createBanconta.error;
|
|
1194
1213
|
_source = _yield$createBanconta.source;
|
|
@@ -1202,31 +1221,31 @@ function _paymentTokenize() {
|
|
|
1202
1221
|
return onError(err);
|
|
1203
1222
|
}));
|
|
1204
1223
|
|
|
1205
|
-
case
|
|
1206
|
-
_context13.next =
|
|
1224
|
+
case 117:
|
|
1225
|
+
_context13.next = 128;
|
|
1207
1226
|
break;
|
|
1208
1227
|
|
|
1209
|
-
case
|
|
1228
|
+
case 119:
|
|
1210
1229
|
if (!(params.paysafecard && payMethods.paysafecard)) {
|
|
1211
|
-
_context13.next =
|
|
1230
|
+
_context13.next = 128;
|
|
1212
1231
|
break;
|
|
1213
1232
|
}
|
|
1214
1233
|
|
|
1215
|
-
_context13.next =
|
|
1234
|
+
_context13.next = 122;
|
|
1216
1235
|
return createPaysafecardPayment(cart, methods(request).createIntent)["catch"](onError);
|
|
1217
1236
|
|
|
1218
|
-
case
|
|
1237
|
+
case 122:
|
|
1219
1238
|
_intent3 = _context13.sent;
|
|
1220
1239
|
|
|
1221
1240
|
if (_intent3) {
|
|
1222
|
-
_context13.next =
|
|
1241
|
+
_context13.next = 125;
|
|
1223
1242
|
break;
|
|
1224
1243
|
}
|
|
1225
1244
|
|
|
1226
1245
|
return _context13.abrupt("return");
|
|
1227
1246
|
|
|
1228
|
-
case
|
|
1229
|
-
_context13.next =
|
|
1247
|
+
case 125:
|
|
1248
|
+
_context13.next = 127;
|
|
1230
1249
|
return cartApi.methods(request, options).update({
|
|
1231
1250
|
billing: {
|
|
1232
1251
|
method: 'paysafecard',
|
|
@@ -1238,10 +1257,10 @@ function _paymentTokenize() {
|
|
|
1238
1257
|
}
|
|
1239
1258
|
});
|
|
1240
1259
|
|
|
1241
|
-
case
|
|
1260
|
+
case 127:
|
|
1242
1261
|
return _context13.abrupt("return", window.location.replace(_intent3.redirect.auth_url));
|
|
1243
1262
|
|
|
1244
|
-
case
|
|
1263
|
+
case 128:
|
|
1245
1264
|
case "end":
|
|
1246
1265
|
return _context13.stop();
|
|
1247
1266
|
}
|
|
@@ -1263,7 +1282,7 @@ function _handleRedirect3() {
|
|
|
1263
1282
|
switch (_context14.prev = _context14.next) {
|
|
1264
1283
|
case 0:
|
|
1265
1284
|
onError = function onError(error) {
|
|
1266
|
-
var errorHandler = get(params, 'card.onError') || get(params, 'paysafecard.onError');
|
|
1285
|
+
var errorHandler = get(params, 'card.onError') || get(params, 'paysafecard.onError') || get(params, 'klarna.onError');
|
|
1267
1286
|
|
|
1268
1287
|
if (isFunction(errorHandler)) {
|
|
1269
1288
|
return errorHandler(error);
|
|
@@ -1273,7 +1292,7 @@ function _handleRedirect3() {
|
|
|
1273
1292
|
};
|
|
1274
1293
|
|
|
1275
1294
|
onSuccess = function onSuccess(result) {
|
|
1276
|
-
var successHandler = get(params, 'card.onSuccess') || get(params, 'paysafecard.onSuccess');
|
|
1295
|
+
var successHandler = get(params, 'card.onSuccess') || get(params, 'paysafecard.onSuccess') || get(params, 'klarna.onSuccess');
|
|
1277
1296
|
|
|
1278
1297
|
if (isFunction(successHandler)) {
|
|
1279
1298
|
return successHandler(result);
|
|
@@ -1296,12 +1315,12 @@ function _handleRedirect3() {
|
|
|
1296
1315
|
|
|
1297
1316
|
case 8:
|
|
1298
1317
|
result = _context14.sent;
|
|
1299
|
-
_context14.next =
|
|
1318
|
+
_context14.next = 21;
|
|
1300
1319
|
break;
|
|
1301
1320
|
|
|
1302
1321
|
case 11:
|
|
1303
1322
|
if (!(gateway === 'paysafecard')) {
|
|
1304
|
-
_context14.next =
|
|
1323
|
+
_context14.next = 17;
|
|
1305
1324
|
break;
|
|
1306
1325
|
}
|
|
1307
1326
|
|
|
@@ -1310,27 +1329,41 @@ function _handleRedirect3() {
|
|
|
1310
1329
|
|
|
1311
1330
|
case 14:
|
|
1312
1331
|
result = _context14.sent;
|
|
1332
|
+
_context14.next = 21;
|
|
1333
|
+
break;
|
|
1313
1334
|
|
|
1314
|
-
case
|
|
1335
|
+
case 17:
|
|
1336
|
+
if (!(gateway === 'klarna_direct')) {
|
|
1337
|
+
_context14.next = 21;
|
|
1338
|
+
break;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
_context14.next = 20;
|
|
1342
|
+
return handleDirectKlarnaRedirectAction(request, cart, params, queryParams);
|
|
1343
|
+
|
|
1344
|
+
case 20:
|
|
1345
|
+
result = _context14.sent;
|
|
1346
|
+
|
|
1347
|
+
case 21:
|
|
1315
1348
|
if (result) {
|
|
1316
|
-
_context14.next =
|
|
1349
|
+
_context14.next = 25;
|
|
1317
1350
|
break;
|
|
1318
1351
|
}
|
|
1319
1352
|
|
|
1320
1353
|
return _context14.abrupt("return");
|
|
1321
1354
|
|
|
1322
|
-
case
|
|
1355
|
+
case 25:
|
|
1323
1356
|
if (!result.error) {
|
|
1324
|
-
_context14.next =
|
|
1357
|
+
_context14.next = 29;
|
|
1325
1358
|
break;
|
|
1326
1359
|
}
|
|
1327
1360
|
|
|
1328
1361
|
return _context14.abrupt("return", onError(result.error));
|
|
1329
1362
|
|
|
1330
|
-
case
|
|
1363
|
+
case 29:
|
|
1331
1364
|
return _context14.abrupt("return", onSuccess(result));
|
|
1332
1365
|
|
|
1333
|
-
case
|
|
1366
|
+
case 30:
|
|
1334
1367
|
case "end":
|
|
1335
1368
|
return _context14.stop();
|
|
1336
1369
|
}
|
|
@@ -1493,6 +1526,56 @@ function _handlePaysafecardRedirectAction() {
|
|
|
1493
1526
|
return _handlePaysafecardRedirectAction.apply(this, arguments);
|
|
1494
1527
|
}
|
|
1495
1528
|
|
|
1529
|
+
function handleDirectKlarnaRedirectAction(_x37, _x38, _x39, _x40) {
|
|
1530
|
+
return _handleDirectKlarnaRedirectAction.apply(this, arguments);
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
function _handleDirectKlarnaRedirectAction() {
|
|
1534
|
+
_handleDirectKlarnaRedirectAction = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee17(request, cart, params, queryParams) {
|
|
1535
|
+
var authorization_token;
|
|
1536
|
+
return _regenerator["default"].wrap(function _callee17$(_context17) {
|
|
1537
|
+
while (1) {
|
|
1538
|
+
switch (_context17.prev = _context17.next) {
|
|
1539
|
+
case 0:
|
|
1540
|
+
authorization_token = queryParams.authorization_token;
|
|
1541
|
+
|
|
1542
|
+
if (authorization_token) {
|
|
1543
|
+
_context17.next = 3;
|
|
1544
|
+
break;
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1547
|
+
return _context17.abrupt("return", {
|
|
1548
|
+
error: {
|
|
1549
|
+
message: 'We are unable to authenticate your payment method. Please choose a different payment method and try again.'
|
|
1550
|
+
}
|
|
1551
|
+
});
|
|
1552
|
+
|
|
1553
|
+
case 3:
|
|
1554
|
+
_context17.next = 5;
|
|
1555
|
+
return cartApi.methods(request, options).update({
|
|
1556
|
+
billing: {
|
|
1557
|
+
method: 'klarna',
|
|
1558
|
+
klarna: {
|
|
1559
|
+
token: authorization_token
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
});
|
|
1563
|
+
|
|
1564
|
+
case 5:
|
|
1565
|
+
return _context17.abrupt("return", {
|
|
1566
|
+
success: true
|
|
1567
|
+
});
|
|
1568
|
+
|
|
1569
|
+
case 6:
|
|
1570
|
+
case "end":
|
|
1571
|
+
return _context17.stop();
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
}, _callee17);
|
|
1575
|
+
}));
|
|
1576
|
+
return _handleDirectKlarnaRedirectAction.apply(this, arguments);
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1496
1579
|
function getTotalsDueRemaining(cart) {
|
|
1497
1580
|
var grand_total = cart.grand_total,
|
|
1498
1581
|
account = cart.account,
|
package/dist/products.js
CHANGED
|
@@ -12,13 +12,13 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
12
12
|
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
14
|
|
|
15
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it
|
|
15
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
16
16
|
|
|
17
17
|
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); }
|
|
18
18
|
|
|
19
19
|
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; }
|
|
20
20
|
|
|
21
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
21
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
22
22
|
|
|
23
23
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
24
24
|
|
package/dist/settings.js
CHANGED
|
@@ -10,13 +10,13 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
|
|
11
11
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
12
12
|
|
|
13
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it
|
|
13
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
14
14
|
|
|
15
15
|
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); }
|
|
16
16
|
|
|
17
17
|
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; }
|
|
18
18
|
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
20
20
|
|
|
21
21
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
22
22
|
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
12
|
+
|
|
13
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
14
|
+
|
|
15
|
+
var _require = require('lodash'),
|
|
16
|
+
map = _require.map,
|
|
17
|
+
get = _require.get,
|
|
18
|
+
reduce = _require.reduce,
|
|
19
|
+
toNumber = _require.toNumber;
|
|
20
|
+
|
|
21
|
+
var addressFieldsMap = {
|
|
22
|
+
given_name: 'first_name',
|
|
23
|
+
family_name: 'last_name',
|
|
24
|
+
city: 'city',
|
|
25
|
+
country: 'country',
|
|
26
|
+
phone: 'phone',
|
|
27
|
+
postal_code: 'zip',
|
|
28
|
+
street_address: 'address1',
|
|
29
|
+
street_address2: 'address2',
|
|
30
|
+
region: 'state'
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var mapFields = function mapFields(fieldsMap, data) {
|
|
34
|
+
return reduce(fieldsMap, function (acc, srcKey, destKey) {
|
|
35
|
+
var value = data[srcKey];
|
|
36
|
+
|
|
37
|
+
if (value) {
|
|
38
|
+
acc[destKey] = value;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return acc;
|
|
42
|
+
}, {});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var mapAddressFields = function mapAddressFields(cart, addressField) {
|
|
46
|
+
return _objectSpread(_objectSpread({}, mapFields(addressFieldsMap, cart[addressField])), {}, {
|
|
47
|
+
email: get(cart, 'account.email')
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
function getOrderLines(cart) {
|
|
52
|
+
var items = map(cart.items, function (item) {
|
|
53
|
+
return {
|
|
54
|
+
type: 'physical',
|
|
55
|
+
name: get(item, 'product.name'),
|
|
56
|
+
reference: get(item, 'product.sku') || get(item, 'product.slug'),
|
|
57
|
+
quantity: item.quantity,
|
|
58
|
+
unit_price: Math.round(toNumber(item.price - item.discount_each) * 100),
|
|
59
|
+
total_amount: Math.round(toNumber(item.price_total - item.discount_total) * 100),
|
|
60
|
+
tax_rate: 0,
|
|
61
|
+
total_tax_amount: 0
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
var tax = get(cart, 'tax_included_total');
|
|
65
|
+
var taxAmount = toNumber(tax) * 100;
|
|
66
|
+
|
|
67
|
+
if (tax) {
|
|
68
|
+
items.push({
|
|
69
|
+
type: 'sales_tax',
|
|
70
|
+
name: 'Taxes',
|
|
71
|
+
quantity: 1,
|
|
72
|
+
unit_price: taxAmount,
|
|
73
|
+
total_amount: taxAmount,
|
|
74
|
+
tax_rate: 0,
|
|
75
|
+
total_tax_amount: 0
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
var shipping = get(cart, 'shipping', {});
|
|
80
|
+
var shippingTotal = get(cart, 'shipment_total', {});
|
|
81
|
+
var shippingAmount = toNumber(shippingTotal) * 100;
|
|
82
|
+
|
|
83
|
+
if (shipping.price) {
|
|
84
|
+
items.push({
|
|
85
|
+
type: 'shipping_fee',
|
|
86
|
+
name: shipping.service_name,
|
|
87
|
+
quantity: 1,
|
|
88
|
+
unit_price: shippingAmount,
|
|
89
|
+
total_amount: shippingAmount,
|
|
90
|
+
tax_rate: 0,
|
|
91
|
+
total_tax_amount: 0
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return items;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function createKlarnaSession(_x, _x2) {
|
|
99
|
+
return _createKlarnaSession.apply(this, arguments);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function _createKlarnaSession() {
|
|
103
|
+
_createKlarnaSession = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(cart, createIntent) {
|
|
104
|
+
var returnUrl, successUrl;
|
|
105
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
106
|
+
while (1) {
|
|
107
|
+
switch (_context.prev = _context.next) {
|
|
108
|
+
case 0:
|
|
109
|
+
returnUrl = "".concat(window.location.origin).concat(window.location.pathname, "?gateway=klarna_direct&sid={{session_id}}");
|
|
110
|
+
successUrl = "".concat(returnUrl, "&authorization_token={{authorization_token}}");
|
|
111
|
+
return _context.abrupt("return", createIntent({
|
|
112
|
+
gateway: 'klarna',
|
|
113
|
+
intent: {
|
|
114
|
+
locale: get(cart, 'settings.locale') || 'en-US',
|
|
115
|
+
purchase_country: get(cart, 'billing.country') || get(cart, 'shipping.country'),
|
|
116
|
+
purchase_currency: cart.currency,
|
|
117
|
+
billing_address: mapAddressFields(cart, 'billing'),
|
|
118
|
+
shipping_address: mapAddressFields(cart, 'shipping'),
|
|
119
|
+
order_amount: Math.round(get(cart, 'grand_total', 0) * 100),
|
|
120
|
+
order_lines: JSON.stringify(getOrderLines(cart)),
|
|
121
|
+
merchant_urls: {
|
|
122
|
+
success: successUrl,
|
|
123
|
+
back: returnUrl,
|
|
124
|
+
cancel: returnUrl,
|
|
125
|
+
error: returnUrl,
|
|
126
|
+
failure: returnUrl
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}));
|
|
130
|
+
|
|
131
|
+
case 3:
|
|
132
|
+
case "end":
|
|
133
|
+
return _context.stop();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}, _callee);
|
|
137
|
+
}));
|
|
138
|
+
return _createKlarnaSession.apply(this, arguments);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
module.exports = {
|
|
142
|
+
createKlarnaSession: createKlarnaSession
|
|
143
|
+
};
|
package/dist/utils/quickpay.js
CHANGED
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.createQuickpayCard = createQuickpayCard;
|
|
9
|
-
exports.createQuickpayPayment = createQuickpayPayment;
|
|
10
9
|
exports.getQuickpayCardDetais = getQuickpayCardDetais;
|
|
10
|
+
exports.createQuickpayPayment = createQuickpayPayment;
|
|
11
11
|
|
|
12
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
13
|
|
package/dist/utils/stripe.js
CHANGED
|
@@ -8,7 +8,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
8
8
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
|
|
11
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
12
12
|
|
|
13
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
14
14
|
|
package/package.json
CHANGED
package/src/payment.js
CHANGED
|
@@ -22,6 +22,7 @@ const {
|
|
|
22
22
|
getQuickpayCardDetais,
|
|
23
23
|
} = require('./utils/quickpay');
|
|
24
24
|
const { createPaysafecardPayment } = require('./utils/paysafecard');
|
|
25
|
+
const { createKlarnaSession } = require('./utils/klarna');
|
|
25
26
|
|
|
26
27
|
const LOADING_SCRIPTS = {};
|
|
27
28
|
const CARD_ELEMENTS = {};
|
|
@@ -223,7 +224,7 @@ const loadScript = async (id, src) => {
|
|
|
223
224
|
async function stripeElements(request, payMethods, params) {
|
|
224
225
|
const { publishable_key } = payMethods.card;
|
|
225
226
|
const stripe = window.Stripe(publishable_key);
|
|
226
|
-
const elements = stripe.elements();
|
|
227
|
+
const elements = stripe.elements(params.config);
|
|
227
228
|
const createElement = (type) => {
|
|
228
229
|
const elementParams = get(params, `card[${type}]`) || params.card || params.ideal;
|
|
229
230
|
const elementOptions = elementParams.options || {};
|
|
@@ -310,9 +311,11 @@ async function payPalButton(request, cart, payMethods, params) {
|
|
|
310
311
|
'purchase_units[0].payments.authorizations[0].id',
|
|
311
312
|
);
|
|
312
313
|
return cartApi.methods(request).update({
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
314
|
+
...(!cart.account_logged_in && {
|
|
315
|
+
account: {
|
|
316
|
+
email: payer.email_address,
|
|
317
|
+
},
|
|
318
|
+
}),
|
|
316
319
|
billing: { method: 'paypal', paypal: { authorization_id: authorizationID } },
|
|
317
320
|
shipping: {
|
|
318
321
|
name: shipping.name.full_name,
|
|
@@ -532,7 +535,12 @@ async function paymentTokenize(request, params, payMethods, cart) {
|
|
|
532
535
|
}
|
|
533
536
|
}
|
|
534
537
|
} else if (params.klarna && payMethods.klarna) {
|
|
535
|
-
if (payMethods.
|
|
538
|
+
if (payMethods.klarna.gateway === 'klarna') {
|
|
539
|
+
const session = await createKlarnaSession(cart, methods(request).createIntent).catch((err) =>
|
|
540
|
+
onError(err),
|
|
541
|
+
);
|
|
542
|
+
return session && window.location.replace(session.redirect_url);
|
|
543
|
+
} else if (payMethods.card && payMethods.card.gateway === 'stripe') {
|
|
536
544
|
if (!window.Stripe) {
|
|
537
545
|
await loadScript('stripe-js', 'https://js.stripe.com/v3/');
|
|
538
546
|
}
|
|
@@ -604,14 +612,20 @@ async function paymentTokenize(request, params, payMethods, cart) {
|
|
|
604
612
|
|
|
605
613
|
async function handleRedirect(request, params, cart) {
|
|
606
614
|
const onError = (error) => {
|
|
607
|
-
const errorHandler =
|
|
615
|
+
const errorHandler =
|
|
616
|
+
get(params, 'card.onError') ||
|
|
617
|
+
get(params, 'paysafecard.onError') ||
|
|
618
|
+
get(params, 'klarna.onError');
|
|
608
619
|
if (isFunction(errorHandler)) {
|
|
609
620
|
return errorHandler(error);
|
|
610
621
|
}
|
|
611
622
|
throw new Error(error.message);
|
|
612
623
|
};
|
|
613
624
|
const onSuccess = (result) => {
|
|
614
|
-
const successHandler =
|
|
625
|
+
const successHandler =
|
|
626
|
+
get(params, 'card.onSuccess') ||
|
|
627
|
+
get(params, 'paysafecard.onSuccess') ||
|
|
628
|
+
get(params, 'klarna.onSuccess');
|
|
615
629
|
if (isFunction(successHandler)) {
|
|
616
630
|
return successHandler(result);
|
|
617
631
|
}
|
|
@@ -626,6 +640,8 @@ async function handleRedirect(request, params, cart) {
|
|
|
626
640
|
result = await handleQuickpayRedirectAction(request, cart, params, queryParams);
|
|
627
641
|
} else if (gateway === 'paysafecard') {
|
|
628
642
|
result = await handlePaysafecardRedirectAction(request, cart, params, queryParams);
|
|
643
|
+
} else if (gateway === 'klarna_direct') {
|
|
644
|
+
result = await handleDirectKlarnaRedirectAction(request, cart, params, queryParams);
|
|
629
645
|
}
|
|
630
646
|
|
|
631
647
|
if (!result) {
|
|
@@ -701,6 +717,29 @@ async function handlePaysafecardRedirectAction(request, cart) {
|
|
|
701
717
|
}
|
|
702
718
|
}
|
|
703
719
|
|
|
720
|
+
async function handleDirectKlarnaRedirectAction(request, cart, params, queryParams) {
|
|
721
|
+
const { authorization_token } = queryParams;
|
|
722
|
+
|
|
723
|
+
if (!authorization_token) {
|
|
724
|
+
return {
|
|
725
|
+
error: {
|
|
726
|
+
message:
|
|
727
|
+
'We are unable to authenticate your payment method. Please choose a different payment method and try again.',
|
|
728
|
+
},
|
|
729
|
+
};
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
await cartApi.methods(request, options).update({
|
|
733
|
+
billing: {
|
|
734
|
+
method: 'klarna',
|
|
735
|
+
klarna: {
|
|
736
|
+
token: authorization_token,
|
|
737
|
+
},
|
|
738
|
+
},
|
|
739
|
+
});
|
|
740
|
+
return { success: true };
|
|
741
|
+
}
|
|
742
|
+
|
|
704
743
|
function getTotalsDueRemaining(cart) {
|
|
705
744
|
const { grand_total, account, account_credit_amount, giftcards } = cart;
|
|
706
745
|
|
|
@@ -719,9 +758,7 @@ function getTotalsDueRemaining(cart) {
|
|
|
719
758
|
}
|
|
720
759
|
|
|
721
760
|
const accountCreditAmount =
|
|
722
|
-
typeof account_credit_amount === 'number'
|
|
723
|
-
? account_credit_amount
|
|
724
|
-
: account && account.balance;
|
|
761
|
+
typeof account_credit_amount === 'number' ? account_credit_amount : account && account.balance;
|
|
725
762
|
if (accountCreditAmount > 0) {
|
|
726
763
|
totalDue -= accountCreditAmount;
|
|
727
764
|
if (totalDue < 0) {
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const { map, get, reduce, toNumber } = require('lodash');
|
|
2
|
+
|
|
3
|
+
const addressFieldsMap = {
|
|
4
|
+
given_name: 'first_name',
|
|
5
|
+
family_name: 'last_name',
|
|
6
|
+
city: 'city',
|
|
7
|
+
country: 'country',
|
|
8
|
+
phone: 'phone',
|
|
9
|
+
postal_code: 'zip',
|
|
10
|
+
street_address: 'address1',
|
|
11
|
+
street_address2: 'address2',
|
|
12
|
+
region: 'state',
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const mapFields = (fieldsMap, data) =>
|
|
16
|
+
reduce(
|
|
17
|
+
fieldsMap,
|
|
18
|
+
(acc, srcKey, destKey) => {
|
|
19
|
+
const value = data[srcKey];
|
|
20
|
+
if (value) {
|
|
21
|
+
acc[destKey] = value;
|
|
22
|
+
}
|
|
23
|
+
return acc;
|
|
24
|
+
},
|
|
25
|
+
{},
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const mapAddressFields = (cart, addressField) => ({
|
|
29
|
+
...mapFields(addressFieldsMap, cart[addressField]),
|
|
30
|
+
email: get(cart, 'account.email'),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
function getOrderLines(cart) {
|
|
34
|
+
const items = map(cart.items, (item) => ({
|
|
35
|
+
type: 'physical',
|
|
36
|
+
name: get(item, 'product.name'),
|
|
37
|
+
reference: get(item, 'product.sku') || get(item, 'product.slug'),
|
|
38
|
+
quantity: item.quantity,
|
|
39
|
+
unit_price: Math.round(toNumber(item.price - item.discount_each) * 100),
|
|
40
|
+
total_amount: Math.round(toNumber(item.price_total - item.discount_total) * 100),
|
|
41
|
+
tax_rate: 0,
|
|
42
|
+
total_tax_amount: 0,
|
|
43
|
+
}));
|
|
44
|
+
|
|
45
|
+
const tax = get(cart, 'tax_included_total');
|
|
46
|
+
const taxAmount = toNumber(tax) * 100;
|
|
47
|
+
if (tax) {
|
|
48
|
+
items.push({
|
|
49
|
+
type: 'sales_tax',
|
|
50
|
+
name: 'Taxes',
|
|
51
|
+
quantity: 1,
|
|
52
|
+
unit_price: taxAmount,
|
|
53
|
+
total_amount: taxAmount,
|
|
54
|
+
tax_rate: 0,
|
|
55
|
+
total_tax_amount: 0,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const shipping = get(cart, 'shipping', {});
|
|
60
|
+
const shippingTotal = get(cart, 'shipment_total', {});
|
|
61
|
+
const shippingAmount = toNumber(shippingTotal) * 100;
|
|
62
|
+
if (shipping.price) {
|
|
63
|
+
items.push({
|
|
64
|
+
type: 'shipping_fee',
|
|
65
|
+
name: shipping.service_name,
|
|
66
|
+
quantity: 1,
|
|
67
|
+
unit_price: shippingAmount,
|
|
68
|
+
total_amount: shippingAmount,
|
|
69
|
+
tax_rate: 0,
|
|
70
|
+
total_tax_amount: 0,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return items;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async function createKlarnaSession(cart, createIntent) {
|
|
78
|
+
const returnUrl = `${window.location.origin}${window.location.pathname}?gateway=klarna_direct&sid={{session_id}}`;
|
|
79
|
+
const successUrl = `${returnUrl}&authorization_token={{authorization_token}}`;
|
|
80
|
+
|
|
81
|
+
return createIntent({
|
|
82
|
+
gateway: 'klarna',
|
|
83
|
+
intent: {
|
|
84
|
+
locale: get(cart, 'settings.locale') || 'en-US',
|
|
85
|
+
purchase_country: get(cart, 'billing.country') || get(cart, 'shipping.country'),
|
|
86
|
+
purchase_currency: cart.currency,
|
|
87
|
+
billing_address: mapAddressFields(cart, 'billing'),
|
|
88
|
+
shipping_address: mapAddressFields(cart, 'shipping'),
|
|
89
|
+
order_amount: Math.round(get(cart, 'grand_total', 0) * 100),
|
|
90
|
+
order_lines: JSON.stringify(getOrderLines(cart)),
|
|
91
|
+
merchant_urls: {
|
|
92
|
+
success: successUrl,
|
|
93
|
+
back: returnUrl,
|
|
94
|
+
cancel: returnUrl,
|
|
95
|
+
error: returnUrl,
|
|
96
|
+
failure: returnUrl,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
module.exports = {
|
|
103
|
+
createKlarnaSession,
|
|
104
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { connect } from 'react-redux';
|
|
3
|
+
import { compose } from 'recompose';
|
|
4
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
5
|
+
import { Card, CardContent, Button } from '@material-ui/core';
|
|
6
|
+
import Info from '../../components/info';
|
|
7
|
+
|
|
8
|
+
const styles = {
|
|
9
|
+
root: {
|
|
10
|
+
display: 'flex',
|
|
11
|
+
flexDirection: 'column',
|
|
12
|
+
},
|
|
13
|
+
input: {
|
|
14
|
+
margin: 20,
|
|
15
|
+
},
|
|
16
|
+
card: {
|
|
17
|
+
marginBottom: 20,
|
|
18
|
+
overflow: 'visible',
|
|
19
|
+
},
|
|
20
|
+
submitContainer: {
|
|
21
|
+
display: 'flex',
|
|
22
|
+
justifyContent: 'space-around',
|
|
23
|
+
},
|
|
24
|
+
button: {
|
|
25
|
+
width: '30%',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
class Klarna extends React.Component {
|
|
30
|
+
constructor(props) {
|
|
31
|
+
super(props);
|
|
32
|
+
this.state = {
|
|
33
|
+
tokenized: false,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
componentDidMount() {
|
|
38
|
+
const { api, onError } = this.props;
|
|
39
|
+
api.payment.handleRedirect({
|
|
40
|
+
klarna: { onError, onSuccess: () => this.setState({ tokenized: true }) },
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
onClickTokenize(event) {
|
|
45
|
+
const { api, onError } = this.props;
|
|
46
|
+
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
api.payment.tokenize({
|
|
49
|
+
klarna: {
|
|
50
|
+
onError,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
render() {
|
|
56
|
+
const {
|
|
57
|
+
classes,
|
|
58
|
+
onOrderSubmit,
|
|
59
|
+
cart: { billing: { method, klarna } = {} },
|
|
60
|
+
} = this.props;
|
|
61
|
+
const { tokenized } = this.state;
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<div className={classes.root}>
|
|
65
|
+
<Card classes={{ root: classes.card }}>
|
|
66
|
+
<CardContent>
|
|
67
|
+
{tokenized && <Info title="Billing" source={{ method, klarna }} />}
|
|
68
|
+
<div className={classes.submitContainer}>
|
|
69
|
+
<Button
|
|
70
|
+
id="stripe-submit-button"
|
|
71
|
+
variant="contained"
|
|
72
|
+
color="primary"
|
|
73
|
+
size="small"
|
|
74
|
+
classes={{ root: classes.button }}
|
|
75
|
+
onClick={this.onClickTokenize.bind(this)}
|
|
76
|
+
>
|
|
77
|
+
Tokenize
|
|
78
|
+
</Button>
|
|
79
|
+
<Button
|
|
80
|
+
variant="contained"
|
|
81
|
+
color="secondary"
|
|
82
|
+
size="small"
|
|
83
|
+
disabled={!tokenized}
|
|
84
|
+
classes={{ root: classes.button }}
|
|
85
|
+
onClick={onOrderSubmit}
|
|
86
|
+
>
|
|
87
|
+
Submit
|
|
88
|
+
</Button>
|
|
89
|
+
</div>
|
|
90
|
+
</CardContent>
|
|
91
|
+
</Card>
|
|
92
|
+
</div>
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const mapStateToProps = ({ api }) => ({
|
|
98
|
+
api,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
export default compose(connect(mapStateToProps), withStyles(styles))(Klarna);
|
|
@@ -24,6 +24,7 @@ import StripeKlarna from './stripe-klarna';
|
|
|
24
24
|
import StripeBancontact from './stripe-bancontact';
|
|
25
25
|
import Quickpay from './quickpay';
|
|
26
26
|
import Paysafecard from './paysafecard';
|
|
27
|
+
import Klarna from './klarna';
|
|
27
28
|
import Info from '../../components/info';
|
|
28
29
|
|
|
29
30
|
const styles = {
|
|
@@ -186,6 +187,15 @@ class Payment extends React.Component {
|
|
|
186
187
|
onError={onError}
|
|
187
188
|
/>
|
|
188
189
|
);
|
|
190
|
+
case 'klarna':
|
|
191
|
+
return (
|
|
192
|
+
<Klarna
|
|
193
|
+
cart={cart}
|
|
194
|
+
onCartUpdate={onCartUpdate}
|
|
195
|
+
onOrderSubmit={onOrderSubmit}
|
|
196
|
+
onError={onError}
|
|
197
|
+
/>
|
|
198
|
+
);
|
|
189
199
|
case 'square':
|
|
190
200
|
return <Typography variant="h4">Coming soon</Typography>;
|
|
191
201
|
case 'braintree':
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { Fragment } from 'react';
|
|
2
2
|
import { connect } from 'react-redux';
|
|
3
3
|
import { compose } from 'recompose';
|
|
4
4
|
import { withStyles } from '@material-ui/core/styles';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Card,
|
|
7
|
+
CardContent,
|
|
8
|
+
Button,
|
|
9
|
+
FormControl,
|
|
10
|
+
FormLabel,
|
|
11
|
+
RadioGroup,
|
|
12
|
+
FormControlLabel,
|
|
13
|
+
Radio,
|
|
14
|
+
} from '@material-ui/core';
|
|
6
15
|
|
|
7
16
|
const styles = {
|
|
8
17
|
root: {
|
|
@@ -29,29 +38,84 @@ class Stripe extends React.Component {
|
|
|
29
38
|
super(props);
|
|
30
39
|
this.state = {
|
|
31
40
|
tokenized: false,
|
|
41
|
+
type: 'card',
|
|
42
|
+
font: 'default',
|
|
32
43
|
};
|
|
44
|
+
|
|
45
|
+
this.onTokenize = this.onTokenize.bind(this);
|
|
46
|
+
this.onError = this.onError.bind(this);
|
|
47
|
+
this.onClickTokenize = this.onClickTokenize.bind(this);
|
|
48
|
+
this.onChangeType = this.onChangeType.bind(this);
|
|
49
|
+
this.onChangeFont = this.onChangeFont.bind(this);
|
|
33
50
|
}
|
|
34
51
|
|
|
35
52
|
componentDidMount() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
53
|
+
this.renderStripeElements();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
componentDidUpdate() {
|
|
57
|
+
this.renderStripeElements();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
renderStripeElements() {
|
|
61
|
+
const { type, font } = this.state;
|
|
62
|
+
const options = {
|
|
63
|
+
showIcon: true,
|
|
64
|
+
style: {
|
|
65
|
+
base: {
|
|
66
|
+
fontWeight: 500,
|
|
67
|
+
fontSize: '16px',
|
|
49
68
|
},
|
|
50
|
-
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
switch (font) {
|
|
73
|
+
case 'audiowide':
|
|
74
|
+
options.style.base.fontFamily = 'Audiowide';
|
|
75
|
+
break;
|
|
76
|
+
case 'festive':
|
|
77
|
+
options.style.base.fontFamily = 'Festive';
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
this.props.api.payment.createElements({
|
|
84
|
+
config: {
|
|
85
|
+
fonts: [
|
|
86
|
+
{
|
|
87
|
+
cssSrc: 'https://fonts.googleapis.com/css?family=Audiowide',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
cssSrc: 'https://fonts.googleapis.com/css?family=Festive',
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
card: {
|
|
95
|
+
...(type === 'card'
|
|
96
|
+
? {
|
|
97
|
+
options,
|
|
98
|
+
}
|
|
99
|
+
: {
|
|
100
|
+
separateElements: true,
|
|
101
|
+
cardNumber: { options },
|
|
102
|
+
cardExpiry: { options },
|
|
103
|
+
cardCvc: { options },
|
|
104
|
+
}),
|
|
105
|
+
onSuccess: this.onTokenize,
|
|
106
|
+
onError: this.onError,
|
|
51
107
|
},
|
|
52
108
|
});
|
|
53
109
|
}
|
|
54
110
|
|
|
111
|
+
onTokenize() {
|
|
112
|
+
this.setState({ tokenized: true });
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
onError(err) {
|
|
116
|
+
this.props.onError(err.message);
|
|
117
|
+
}
|
|
118
|
+
|
|
55
119
|
onClickTokenize(event) {
|
|
56
120
|
const { api } = this.props;
|
|
57
121
|
|
|
@@ -59,15 +123,46 @@ class Stripe extends React.Component {
|
|
|
59
123
|
api.payment.tokenize();
|
|
60
124
|
}
|
|
61
125
|
|
|
126
|
+
onChangeType(event, type) {
|
|
127
|
+
this.setState({ type });
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
onChangeFont(event, font) {
|
|
131
|
+
this.setState({ font });
|
|
132
|
+
}
|
|
133
|
+
|
|
62
134
|
render() {
|
|
63
135
|
const { classes, onOrderSubmit } = this.props;
|
|
64
|
-
const { tokenized } = this.state;
|
|
136
|
+
const { tokenized, type } = this.state;
|
|
65
137
|
|
|
66
138
|
return (
|
|
67
139
|
<div className={classes.root}>
|
|
68
140
|
<Card classes={{ root: classes.card }}>
|
|
69
141
|
<CardContent>
|
|
70
|
-
<
|
|
142
|
+
<FormControl>
|
|
143
|
+
<FormLabel>Type</FormLabel>
|
|
144
|
+
<RadioGroup defaultValue="card" row onChange={this.onChangeType}>
|
|
145
|
+
<FormControlLabel value="card" control={<Radio />} label="Card" />
|
|
146
|
+
<FormControlLabel value="separate" control={<Radio />} label="Separate elements" />
|
|
147
|
+
</RadioGroup>
|
|
148
|
+
</FormControl>
|
|
149
|
+
<FormControl>
|
|
150
|
+
<FormLabel>Font</FormLabel>
|
|
151
|
+
<RadioGroup defaultValue="default" row onChange={this.onChangeFont}>
|
|
152
|
+
<FormControlLabel value="default" control={<Radio />} label="Default" />
|
|
153
|
+
<FormControlLabel value="audiowide" control={<Radio />} label="Audiowide" />
|
|
154
|
+
<FormControlLabel value="festive" control={<Radio />} label="Festive" />
|
|
155
|
+
</RadioGroup>
|
|
156
|
+
</FormControl>
|
|
157
|
+
{type === 'card' ? (
|
|
158
|
+
<div id="card-element" className={classes.cardInput} />
|
|
159
|
+
) : (
|
|
160
|
+
<Fragment>
|
|
161
|
+
<div id="cardNumber-element" className={classes.cardInput} />
|
|
162
|
+
<div id="cardExpiry-element" className={classes.cardInput} />
|
|
163
|
+
<div id="cardCvc-element" className={classes.cardInput} />
|
|
164
|
+
</Fragment>
|
|
165
|
+
)}
|
|
71
166
|
<div className={classes.submitContainer}>
|
|
72
167
|
<Button
|
|
73
168
|
id="stripe-submit-button"
|
|
@@ -75,7 +170,7 @@ class Stripe extends React.Component {
|
|
|
75
170
|
color="primary"
|
|
76
171
|
size="small"
|
|
77
172
|
classes={{ root: classes.button }}
|
|
78
|
-
onClick={this.onClickTokenize
|
|
173
|
+
onClick={this.onClickTokenize}
|
|
79
174
|
>
|
|
80
175
|
Tokenize
|
|
81
176
|
</Button>
|