@lightspeed/online-payments-sdk 1.0.5 → 1.1.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/cjs/v1/adyen/widget.js +2 -2
- package/dist/cjs/v1/stripe/index.js +32 -0
- package/dist/cjs/v1/stripe/shared.js +266 -0
- package/dist/cjs/v1/stripe/themes.js +43 -0
- package/dist/cjs/v1/stripe/widget.js +20 -142
- package/dist/cjs/v1/stripe/widgets/moto.js +64 -0
- package/dist/cjs/v1/stripe/widgets/payment.js +65 -0
- package/dist/cjs/v1/widget.js +2 -2
- package/dist/v1/adyen/session.d.ts +2 -1
- package/dist/v1/adyen/widget.d.ts +2 -2
- package/dist/v1/adyen/widget.js +2 -2
- package/dist/v1/common.d.ts +5 -2
- package/dist/v1/index.d.ts +2 -2
- package/dist/v1/session.d.ts +6 -3
- package/dist/v1/stripe/index.d.ts +7 -0
- package/dist/v1/stripe/index.js +12 -0
- package/dist/v1/stripe/session.d.ts +4 -2
- package/dist/v1/stripe/shared.d.ts +56 -0
- package/dist/v1/stripe/shared.js +255 -0
- package/dist/v1/stripe/themes.d.ts +18 -0
- package/dist/v1/stripe/themes.js +40 -0
- package/dist/v1/stripe/widget.d.ts +7 -3
- package/dist/v1/stripe/widget.js +20 -142
- package/dist/v1/stripe/widgets/moto.d.ts +9 -0
- package/dist/v1/stripe/widgets/moto.js +61 -0
- package/dist/v1/stripe/widgets/payment.d.ts +8 -0
- package/dist/v1/stripe/widgets/payment.js +62 -0
- package/dist/v1/widget.d.ts +2 -0
- package/dist/v1/widget.js +2 -2
- package/package.json +1 -1
|
@@ -39,13 +39,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
exports.AdyenWidget = void 0;
|
|
40
40
|
var adyen_web_1 = require("@adyen/adyen-web");
|
|
41
41
|
var ResultBuilder_1 = require("./ResultBuilder");
|
|
42
|
-
function mount(mountElement,
|
|
42
|
+
function mount(mountElement, session, eventBroadcaster) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function () {
|
|
44
44
|
var checkoutConfig, checkout, dropinConfiguration, dropIn;
|
|
45
45
|
return __generator(this, function (_a) {
|
|
46
46
|
switch (_a.label) {
|
|
47
47
|
case 0:
|
|
48
|
-
checkoutConfig = createAdyenConfiguration(context, eventBroadcaster);
|
|
48
|
+
checkoutConfig = createAdyenConfiguration(session.context, eventBroadcaster);
|
|
49
49
|
return [4 /*yield*/, (0, adyen_web_1.AdyenCheckout)(checkoutConfig)];
|
|
50
50
|
case 1:
|
|
51
51
|
checkout = _a.sent();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.mountMotoWidget = exports.mountPaymentWidget = exports.StripeWidget = void 0;
|
|
18
|
+
// Main widget interface
|
|
19
|
+
var widget_1 = require("./widget");
|
|
20
|
+
Object.defineProperty(exports, "StripeWidget", { enumerable: true, get: function () { return widget_1.StripeWidget; } });
|
|
21
|
+
// Individual widget modules
|
|
22
|
+
var payment_1 = require("./widgets/payment");
|
|
23
|
+
Object.defineProperty(exports, "mountPaymentWidget", { enumerable: true, get: function () { return payment_1.mountPaymentWidget; } });
|
|
24
|
+
var moto_1 = require("./widgets/moto");
|
|
25
|
+
Object.defineProperty(exports, "mountMotoWidget", { enumerable: true, get: function () { return moto_1.mountMotoWidget; } });
|
|
26
|
+
// Shared utilities
|
|
27
|
+
__exportStar(require("./shared"), exports);
|
|
28
|
+
// Theme configurations
|
|
29
|
+
__exportStar(require("./themes"), exports);
|
|
30
|
+
// Session and types
|
|
31
|
+
__exportStar(require("./session"), exports);
|
|
32
|
+
__exportStar(require("./ResultBuilder"), exports);
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.initStripe = initStripe;
|
|
51
|
+
exports.createPaymentElementOptions = createPaymentElementOptions;
|
|
52
|
+
exports.createAddressElementOptions = createAddressElementOptions;
|
|
53
|
+
exports.createPaymentElement = createPaymentElement;
|
|
54
|
+
exports.createAddressElement = createAddressElement;
|
|
55
|
+
exports.cleanupElements = cleanupElements;
|
|
56
|
+
exports.handleSaveCard = handleSaveCard;
|
|
57
|
+
exports.handlePayment = handlePayment;
|
|
58
|
+
exports.createSubmitHandler = createSubmitHandler;
|
|
59
|
+
var stripe_js_1 = require("@stripe/stripe-js");
|
|
60
|
+
var ResultBuilder_1 = require("./ResultBuilder");
|
|
61
|
+
var error_1 = require("../error");
|
|
62
|
+
var themes_1 = require("./themes");
|
|
63
|
+
/**
|
|
64
|
+
* Initialize Stripe with the given context
|
|
65
|
+
*/
|
|
66
|
+
function initStripe(context, theme) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
68
|
+
var publishableKey, clientSecret, customerSessionClientSecret, loadedStripe, stripe, themeConfig, elementsOptions, elements;
|
|
69
|
+
return __generator(this, function (_a) {
|
|
70
|
+
switch (_a.label) {
|
|
71
|
+
case 0:
|
|
72
|
+
publishableKey = context.publishableKey, clientSecret = context.clientSecret, customerSessionClientSecret = context.customerSessionClientSecret;
|
|
73
|
+
return [4 /*yield*/, (0, stripe_js_1.loadStripe)(publishableKey)];
|
|
74
|
+
case 1:
|
|
75
|
+
loadedStripe = _a.sent();
|
|
76
|
+
if (!loadedStripe) {
|
|
77
|
+
throw new Error('Failed to initialize Stripe');
|
|
78
|
+
}
|
|
79
|
+
stripe = loadedStripe;
|
|
80
|
+
themeConfig = (0, themes_1.getThemeConfig)(theme);
|
|
81
|
+
elementsOptions = __assign(__assign(__assign({ clientSecret: clientSecret, customerSessionClientSecret: customerSessionClientSecret }, (context.locale && { locale: context.locale })), (themeConfig && { appearance: themeConfig.appearance })), (themeConfig && { fonts: themeConfig.fonts }));
|
|
82
|
+
elements = stripe.elements(elementsOptions);
|
|
83
|
+
return [2 /*return*/, { stripe: stripe, elements: elements }];
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create payment element options with default wallet settings
|
|
90
|
+
*/
|
|
91
|
+
function createPaymentElementOptions(defaultValues, theme) {
|
|
92
|
+
var options = {
|
|
93
|
+
wallets: {
|
|
94
|
+
applePay: 'never',
|
|
95
|
+
googlePay: 'never',
|
|
96
|
+
link: 'never',
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
if (defaultValues) {
|
|
100
|
+
options.defaultValues = {
|
|
101
|
+
billingDetails: {
|
|
102
|
+
address: {
|
|
103
|
+
country: defaultValues.country,
|
|
104
|
+
postal_code: defaultValues.postalCode,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Apply theme layout configuration
|
|
110
|
+
if (theme) {
|
|
111
|
+
var themeConfig = (0, themes_1.getThemeConfig)(theme);
|
|
112
|
+
if (themeConfig === null || themeConfig === void 0 ? void 0 : themeConfig.layout) {
|
|
113
|
+
options.layout = themeConfig.layout;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return options;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create address element options
|
|
120
|
+
*/
|
|
121
|
+
function createAddressElementOptions(defaultValues) {
|
|
122
|
+
var addressOptions = {
|
|
123
|
+
mode: 'billing',
|
|
124
|
+
};
|
|
125
|
+
if (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.country) {
|
|
126
|
+
addressOptions.defaultValues = {
|
|
127
|
+
address: {
|
|
128
|
+
country: defaultValues.country,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return addressOptions;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Create and mount payment element
|
|
136
|
+
*/
|
|
137
|
+
function createPaymentElement(elements, options, mountElement, eventBroadcaster) {
|
|
138
|
+
var paymentElement = elements.create('payment', options);
|
|
139
|
+
paymentElement.on('ready', function () {
|
|
140
|
+
return eventBroadcaster.publish({ status: 'Ready', code: 'Ready' });
|
|
141
|
+
});
|
|
142
|
+
var paymentContainer = document.createElement('div');
|
|
143
|
+
paymentContainer.className = 'stripe-payment-element-container';
|
|
144
|
+
mountElement.appendChild(paymentContainer);
|
|
145
|
+
paymentElement.mount(paymentContainer);
|
|
146
|
+
return { element: paymentElement, container: paymentContainer };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Create and mount address element
|
|
150
|
+
*/
|
|
151
|
+
function createAddressElement(elements, options, mountElement) {
|
|
152
|
+
var addressElement = elements.create('address', options);
|
|
153
|
+
var addressContainer = document.createElement('div');
|
|
154
|
+
addressContainer.className = 'stripe-address-element-container';
|
|
155
|
+
mountElement.appendChild(addressContainer);
|
|
156
|
+
addressElement.mount(addressContainer);
|
|
157
|
+
return { element: addressElement, container: addressContainer };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Clean up elements and containers
|
|
161
|
+
*/
|
|
162
|
+
function cleanupElements(paymentElement, addressElement, paymentContainer, addressContainer) {
|
|
163
|
+
paymentElement.unmount();
|
|
164
|
+
if (addressElement) {
|
|
165
|
+
addressElement.unmount();
|
|
166
|
+
}
|
|
167
|
+
// Clean up created containers
|
|
168
|
+
if (addressContainer) {
|
|
169
|
+
addressContainer.remove();
|
|
170
|
+
}
|
|
171
|
+
if (paymentContainer) {
|
|
172
|
+
paymentContainer.remove();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Handle save card operation
|
|
177
|
+
*/
|
|
178
|
+
function handleSaveCard(stripe, elements, session) {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
180
|
+
var _a, error, setupIntent;
|
|
181
|
+
return __generator(this, function (_b) {
|
|
182
|
+
switch (_b.label) {
|
|
183
|
+
case 0: return [4 /*yield*/, stripe.confirmSetup({
|
|
184
|
+
elements: elements,
|
|
185
|
+
redirect: 'if_required',
|
|
186
|
+
confirmParams: {
|
|
187
|
+
return_url: session.context.redirectUrl || window.location.href,
|
|
188
|
+
},
|
|
189
|
+
})];
|
|
190
|
+
case 1:
|
|
191
|
+
_a = _b.sent(), error = _a.error, setupIntent = _a.setupIntent;
|
|
192
|
+
return [2 /*return*/, error
|
|
193
|
+
? ResultBuilder_1.EventBuilder.fromStripeError(error)
|
|
194
|
+
: ResultBuilder_1.EventBuilder.fromSetupIntent(setupIntent)];
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Handle payment operation
|
|
201
|
+
*/
|
|
202
|
+
function handlePayment(stripe, elements, session) {
|
|
203
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
204
|
+
var _a, error, paymentIntent;
|
|
205
|
+
return __generator(this, function (_b) {
|
|
206
|
+
switch (_b.label) {
|
|
207
|
+
case 0: return [4 /*yield*/, stripe.confirmPayment({
|
|
208
|
+
elements: elements,
|
|
209
|
+
redirect: 'if_required',
|
|
210
|
+
confirmParams: {
|
|
211
|
+
return_url: session.context.redirectUrl || window.location.href,
|
|
212
|
+
},
|
|
213
|
+
})];
|
|
214
|
+
case 1:
|
|
215
|
+
_a = _b.sent(), error = _a.error, paymentIntent = _a.paymentIntent;
|
|
216
|
+
return [2 /*return*/, error
|
|
217
|
+
? ResultBuilder_1.EventBuilder.fromStripeError(error)
|
|
218
|
+
: ResultBuilder_1.EventBuilder.fromPaymentIntent(paymentIntent)];
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Create common submit handler for widgets
|
|
225
|
+
*/
|
|
226
|
+
function createSubmitHandler(stripe, elements, session, eventBroadcaster) {
|
|
227
|
+
var _this = this;
|
|
228
|
+
return function () { return __awaiter(_this, void 0, void 0, function () {
|
|
229
|
+
var result;
|
|
230
|
+
return __generator(this, function (_a) {
|
|
231
|
+
switch (_a.label) {
|
|
232
|
+
case 0:
|
|
233
|
+
result = undefined;
|
|
234
|
+
if (!['save-card', 'payment'].includes(session.context.intent)) {
|
|
235
|
+
eventBroadcaster.publish({
|
|
236
|
+
status: 'Error',
|
|
237
|
+
code: 'InvalidSessionPayload',
|
|
238
|
+
loggingEnrichment: {
|
|
239
|
+
message: "context has an unexpected intent of ".concat(session.context.intent),
|
|
240
|
+
intent: session.context.intent,
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
throw new error_1.InvalidSessionPayloadError();
|
|
244
|
+
}
|
|
245
|
+
if (!(session.context.intent === 'save-card')) return [3 /*break*/, 2];
|
|
246
|
+
return [4 /*yield*/, handleSaveCard(stripe, elements, session)];
|
|
247
|
+
case 1:
|
|
248
|
+
result = _a.sent();
|
|
249
|
+
_a.label = 2;
|
|
250
|
+
case 2:
|
|
251
|
+
if (!(session.context.intent === 'payment')) return [3 /*break*/, 4];
|
|
252
|
+
return [4 /*yield*/, handlePayment(stripe, elements, session)];
|
|
253
|
+
case 3:
|
|
254
|
+
result = _a.sent();
|
|
255
|
+
_a.label = 4;
|
|
256
|
+
case 4:
|
|
257
|
+
if (!result) {
|
|
258
|
+
eventBroadcaster.publish({ status: 'Error', code: 'Unexpected' });
|
|
259
|
+
throw new error_1.ProcessingError();
|
|
260
|
+
}
|
|
261
|
+
eventBroadcaster.publish(result);
|
|
262
|
+
return [2 /*return*/, result];
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}); };
|
|
266
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getThemeConfig = getThemeConfig;
|
|
4
|
+
/**
|
|
5
|
+
* Get theme configuration based on theme name
|
|
6
|
+
*/
|
|
7
|
+
function getThemeConfig(theme) {
|
|
8
|
+
if (!theme) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
switch (theme) {
|
|
12
|
+
case 'invoicing':
|
|
13
|
+
return {
|
|
14
|
+
appearance: {
|
|
15
|
+
theme: 'stripe',
|
|
16
|
+
variables: {
|
|
17
|
+
fontFamily: 'Inter, system-ui, sans-serif',
|
|
18
|
+
fontWeightNormal: 'normal',
|
|
19
|
+
fontSizeBase: '1rem',
|
|
20
|
+
fontLineHeight: '24px',
|
|
21
|
+
borderRadius: '12px',
|
|
22
|
+
},
|
|
23
|
+
labels: 'floating',
|
|
24
|
+
rules: {
|
|
25
|
+
'.Label, .Label--floating': {
|
|
26
|
+
color: '#00071b',
|
|
27
|
+
opacity: '0.5',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
fonts: [
|
|
32
|
+
{
|
|
33
|
+
cssSrc: 'https://fonts.googleapis.com/css?family=Inter',
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
layout: {
|
|
37
|
+
type: 'tabs',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
default:
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -49,140 +38,29 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
49
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
39
|
exports.StripeWidget = void 0;
|
|
51
40
|
exports.mount = mount;
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
function
|
|
41
|
+
var payment_1 = require("./widgets/payment");
|
|
42
|
+
var moto_1 = require("./widgets/moto");
|
|
43
|
+
/**
|
|
44
|
+
* Main mount function that delegates to appropriate widget based on session type
|
|
45
|
+
*/
|
|
46
|
+
function mount(mountElement, session, eventBroadcaster, defaultValues, theme) {
|
|
56
47
|
return __awaiter(this, void 0, void 0, function () {
|
|
57
|
-
var
|
|
48
|
+
var sessionType;
|
|
58
49
|
return __generator(this, function (_a) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
case
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return [2 /*return*/, { stripe: stripe, elements: elements }];
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
function mount(mountElement, context, eventBroadcaster, defaultValues) {
|
|
77
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
78
|
-
var _a, stripe, elements, options, paymentElement;
|
|
79
|
-
var _this = this;
|
|
80
|
-
return __generator(this, function (_b) {
|
|
81
|
-
switch (_b.label) {
|
|
82
|
-
case 0: return [4 /*yield*/, init(context)];
|
|
83
|
-
case 1:
|
|
84
|
-
_a = _b.sent(), stripe = _a.stripe, elements = _a.elements;
|
|
85
|
-
options = {
|
|
86
|
-
wallets: {
|
|
87
|
-
applePay: 'never',
|
|
88
|
-
googlePay: 'never',
|
|
89
|
-
link: 'never',
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
if (defaultValues) {
|
|
93
|
-
options.defaultValues = {
|
|
94
|
-
billingDetails: {
|
|
95
|
-
address: {
|
|
96
|
-
country: defaultValues.country,
|
|
97
|
-
postal_code: defaultValues.postalCode,
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
paymentElement = elements.create('payment', options);
|
|
103
|
-
paymentElement.on('ready', function () {
|
|
104
|
-
return eventBroadcaster.publish({ status: 'Ready', code: 'Ready' });
|
|
105
|
-
});
|
|
106
|
-
paymentElement.mount(mountElement);
|
|
107
|
-
return [2 /*return*/, {
|
|
108
|
-
unmount: function () { return paymentElement.unmount(); },
|
|
109
|
-
submit: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
110
|
-
var result;
|
|
111
|
-
return __generator(this, function (_a) {
|
|
112
|
-
switch (_a.label) {
|
|
113
|
-
case 0:
|
|
114
|
-
result = undefined;
|
|
115
|
-
if (!['save-card', 'payment'].includes(context.intent)) {
|
|
116
|
-
eventBroadcaster.publish({
|
|
117
|
-
status: 'Error',
|
|
118
|
-
code: 'InvalidSessionPayload',
|
|
119
|
-
loggingEnrichment: {
|
|
120
|
-
message: "context has an unexpect intent of ".concat(context.intent),
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
throw new error_1.InvalidSessionPayloadError();
|
|
124
|
-
}
|
|
125
|
-
if (!(context.intent === 'save-card')) return [3 /*break*/, 2];
|
|
126
|
-
return [4 /*yield*/, handleSaveCard(stripe, elements)];
|
|
127
|
-
case 1:
|
|
128
|
-
result = _a.sent();
|
|
129
|
-
_a.label = 2;
|
|
130
|
-
case 2:
|
|
131
|
-
if (!(context.intent === 'payment')) return [3 /*break*/, 4];
|
|
132
|
-
return [4 /*yield*/, handlePayment(stripe, elements)];
|
|
133
|
-
case 3:
|
|
134
|
-
result = _a.sent();
|
|
135
|
-
_a.label = 4;
|
|
136
|
-
case 4:
|
|
137
|
-
if (!result) {
|
|
138
|
-
eventBroadcaster.publish({ status: 'Error', code: 'Unexpected' });
|
|
139
|
-
throw new error_1.ProcessingError();
|
|
140
|
-
}
|
|
141
|
-
eventBroadcaster.publish(result);
|
|
142
|
-
return [2 /*return*/, result];
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}); },
|
|
146
|
-
}];
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
function handleSaveCard(stripe, elements) {
|
|
152
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
153
|
-
var _a, error, setupIntent;
|
|
154
|
-
return __generator(this, function (_b) {
|
|
155
|
-
switch (_b.label) {
|
|
156
|
-
case 0: return [4 /*yield*/, stripe.confirmSetup({
|
|
157
|
-
elements: elements,
|
|
158
|
-
redirect: 'if_required',
|
|
159
|
-
confirmParams: { return_url: window.location.href },
|
|
160
|
-
})];
|
|
161
|
-
case 1:
|
|
162
|
-
_a = _b.sent(), error = _a.error, setupIntent = _a.setupIntent;
|
|
163
|
-
return [2 /*return*/, error
|
|
164
|
-
? ResultBuilder_1.EventBuilder.fromStripeError(error)
|
|
165
|
-
: ResultBuilder_1.EventBuilder.fromSetupIntent(setupIntent)];
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
function handlePayment(stripe, elements) {
|
|
171
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
172
|
-
var _a, error, paymentIntent;
|
|
173
|
-
return __generator(this, function (_b) {
|
|
174
|
-
switch (_b.label) {
|
|
175
|
-
case 0: return [4 /*yield*/, stripe.confirmPayment({
|
|
176
|
-
elements: elements,
|
|
177
|
-
redirect: 'if_required',
|
|
178
|
-
confirmParams: { return_url: window.location.href },
|
|
179
|
-
})];
|
|
180
|
-
case 1:
|
|
181
|
-
_a = _b.sent(), error = _a.error, paymentIntent = _a.paymentIntent;
|
|
182
|
-
return [2 /*return*/, error
|
|
183
|
-
? ResultBuilder_1.EventBuilder.fromStripeError(error)
|
|
184
|
-
: ResultBuilder_1.EventBuilder.fromPaymentIntent(paymentIntent)];
|
|
50
|
+
sessionType = session.metadata.sessionType;
|
|
51
|
+
// Route to appropriate widget based on session type
|
|
52
|
+
switch (sessionType) {
|
|
53
|
+
case 'payment':
|
|
54
|
+
case 'payment-with-save':
|
|
55
|
+
return [2 /*return*/, (0, payment_1.mountPaymentWidget)(mountElement, session, eventBroadcaster, defaultValues, theme)];
|
|
56
|
+
case 'moto':
|
|
57
|
+
case 'moto-with-save':
|
|
58
|
+
case 'save':
|
|
59
|
+
return [2 /*return*/, (0, moto_1.mountMotoWidget)(mountElement, session, eventBroadcaster, defaultValues, theme)];
|
|
60
|
+
default:
|
|
61
|
+
throw new Error("Unsupported session type: ".concat(sessionType));
|
|
185
62
|
}
|
|
63
|
+
return [2 /*return*/];
|
|
186
64
|
});
|
|
187
65
|
});
|
|
188
66
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.mountMotoWidget = mountMotoWidget;
|
|
40
|
+
var shared_1 = require("../shared");
|
|
41
|
+
/**
|
|
42
|
+
* Mount MOTO widget for moto and moto-with-save session types
|
|
43
|
+
* MOTO (Mail Order/Telephone Order) forms don't require address collection
|
|
44
|
+
*/
|
|
45
|
+
function mountMotoWidget(mountElement, session, eventBroadcaster, defaultValues, theme) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
+
var _a, stripe, elements, paymentOptions, _b, paymentElement, paymentContainer;
|
|
48
|
+
return __generator(this, function (_c) {
|
|
49
|
+
switch (_c.label) {
|
|
50
|
+
case 0: return [4 /*yield*/, (0, shared_1.initStripe)(session.context, theme)];
|
|
51
|
+
case 1:
|
|
52
|
+
_a = _c.sent(), stripe = _a.stripe, elements = _a.elements;
|
|
53
|
+
paymentOptions = (0, shared_1.createPaymentElementOptions)(defaultValues, theme);
|
|
54
|
+
_b = (0, shared_1.createPaymentElement)(elements, paymentOptions, mountElement, eventBroadcaster), paymentElement = _b.element, paymentContainer = _b.container;
|
|
55
|
+
return [2 /*return*/, {
|
|
56
|
+
unmount: function () {
|
|
57
|
+
(0, shared_1.cleanupElements)(paymentElement, null, paymentContainer, null);
|
|
58
|
+
},
|
|
59
|
+
submit: (0, shared_1.createSubmitHandler)(stripe, elements, session, eventBroadcaster),
|
|
60
|
+
}];
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.mountPaymentWidget = mountPaymentWidget;
|
|
40
|
+
var shared_1 = require("../shared");
|
|
41
|
+
/**
|
|
42
|
+
* Mount payment widget for payment and payment-with-save session types
|
|
43
|
+
*/
|
|
44
|
+
function mountPaymentWidget(mountElement, session, eventBroadcaster, defaultValues, theme) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
46
|
+
var _a, stripe, elements, addressOptions, _b, addressElement, addressContainer, paymentOptions, _c, paymentElement, paymentContainer;
|
|
47
|
+
return __generator(this, function (_d) {
|
|
48
|
+
switch (_d.label) {
|
|
49
|
+
case 0: return [4 /*yield*/, (0, shared_1.initStripe)(session.context, theme)];
|
|
50
|
+
case 1:
|
|
51
|
+
_a = _d.sent(), stripe = _a.stripe, elements = _a.elements;
|
|
52
|
+
addressOptions = (0, shared_1.createAddressElementOptions)(defaultValues);
|
|
53
|
+
_b = (0, shared_1.createAddressElement)(elements, addressOptions, mountElement), addressElement = _b.element, addressContainer = _b.container;
|
|
54
|
+
paymentOptions = (0, shared_1.createPaymentElementOptions)(defaultValues, theme);
|
|
55
|
+
_c = (0, shared_1.createPaymentElement)(elements, paymentOptions, mountElement, eventBroadcaster), paymentElement = _c.element, paymentContainer = _c.container;
|
|
56
|
+
return [2 /*return*/, {
|
|
57
|
+
unmount: function () {
|
|
58
|
+
(0, shared_1.cleanupElements)(paymentElement, addressElement, paymentContainer, addressContainer);
|
|
59
|
+
},
|
|
60
|
+
submit: (0, shared_1.createSubmitHandler)(stripe, elements, session, eventBroadcaster),
|
|
61
|
+
}];
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|