Skip to content

Commit b0777aa

Browse files
authored
Merge pull request #1275 from Adyen/release/25.2.0
Release/25.2.0
2 parents 4df9fce + b948ba5 commit b0777aa

107 files changed

Lines changed: 1659 additions & 808 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ src/cartridges/app_adyen_SFRA/cartridge/client/default/js/checkout/checkoutSFRA6
1414
src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/checkout_services/placeOrder.js
1515
src/cartridges/int_adyen_SFRA/cartridge/adyen/webhooks
1616
src/cartridges/int_adyen_SFRA/cartridge/adyen/utils/adyenHelper.js
17-
src/cartridges/int_adyen_SFRA/cartridge/adyen/scripts/payments/adyenTerminalApi.js
17+
src/cartridges/int_adyen_SFRA/cartridge/adyen/scripts/pos/adyenTerminalApi.js
1818

1919
# Test files
2020
*.test.js

cartridges/app_adyen_SFRA/.project

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<projectDescription>
33
<name>app_adyen_SFRA</name>
4-
<comment>v25.1.0</comment>
4+
<comment>v25.2.0</comment>
55
<projects></projects>
66
<buildSpec>
77
<buildCommand>

cartridges/app_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,14 @@ function getKlarnaConfig() {
392392
return {
393393
showPayButton: true,
394394
useKlarnaWidget: true,
395+
onError: function onError(component) {
396+
helpers.paymentFromComponent({
397+
cancelTransaction: true,
398+
merchantReference: document.querySelector('#merchantReference').value,
399+
orderToken: document.querySelector('#orderToken').value
400+
}, component);
401+
document.querySelector('#showConfirmationForm').submit();
402+
},
395403
onSubmit: function onSubmit(state, component) {
396404
helpers.assignPaymentMethodValue();
397405
helpers.paymentFromComponent(state.data, component);

cartridges/app_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js

Lines changed: 92 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ var _require2 = require('./localesUsingInstallments'),
2929
installmentLocales = _require2.installmentLocales;
3030
var _require3 = require('../commons'),
3131
getPaymentMethods = _require3.getPaymentMethods,
32-
fetchGiftCards = _require3.fetchGiftCards;
32+
fetchGiftCards = _require3.fetchGiftCards,
33+
getConnectedTerminals = _require3.getConnectedTerminals;
3334
var constants = require('../constants');
3435
var _require4 = require('./renderGiftcardComponent'),
3536
createElementsToShowRemainingGiftCardAmount = _require4.createElementsToShowRemainingGiftCardAmount,
@@ -162,18 +163,81 @@ function _renderPaymentMethods() {
162163
return _renderPaymentMethods.apply(this, arguments);
163164
}
164165
function renderPosTerminals(adyenConnectedTerminals) {
165-
var _adyenConnectedTermin;
166166
var removeChilds = function removeChilds() {
167167
var posTerminals = document.querySelector('#adyenPosTerminals');
168168
while (posTerminals.firstChild) {
169169
posTerminals.removeChild(posTerminals.firstChild);
170170
}
171171
};
172-
if (adyenConnectedTerminals !== null && adyenConnectedTerminals !== void 0 && (_adyenConnectedTermin = adyenConnectedTerminals.uniqueTerminalIds) !== null && _adyenConnectedTermin !== void 0 && _adyenConnectedTermin.length) {
172+
if (adyenConnectedTerminals) {
173173
removeChilds();
174-
addPosTerminals(adyenConnectedTerminals.uniqueTerminalIds);
174+
addPosTerminals(adyenConnectedTerminals);
175175
}
176176
}
177+
function addStores(_x4) {
178+
return _addStores.apply(this, arguments);
179+
}
180+
function _addStores() {
181+
_addStores = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(stores) {
182+
var storeDropdown, placeholderOption, storeArray, storeDropdownContainer, existingDropdown;
183+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
184+
while (1) switch (_context4.prev = _context4.next) {
185+
case 0:
186+
storeDropdown = document.createElement('select');
187+
storeDropdown.id = 'storeList';
188+
placeholderOption = document.createElement('option');
189+
placeholderOption.value = '';
190+
placeholderOption.text = 'Select a store';
191+
placeholderOption.disabled = true;
192+
placeholderOption.selected = true;
193+
storeDropdown.appendChild(placeholderOption);
194+
storeArray = typeof stores === 'string' ? stores.split(',') : stores;
195+
storeArray.forEach(function (terminalStore) {
196+
var option = document.createElement('option');
197+
option.value = terminalStore.trim();
198+
option.text = terminalStore.trim();
199+
storeDropdown.appendChild(option);
200+
});
201+
storeDropdownContainer = document.querySelector('#adyenPosStores');
202+
existingDropdown = storeDropdownContainer.querySelector('#storeList');
203+
if (existingDropdown) {
204+
storeDropdownContainer.removeChild(existingDropdown);
205+
}
206+
storeDropdownContainer.append(storeDropdown);
207+
storeDropdown.addEventListener('change', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
208+
var terminalDropdownContainer, existingTerminalDropdown, data, parsedResponse, uniqueTerminalIds;
209+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
210+
while (1) switch (_context3.prev = _context3.next) {
211+
case 0:
212+
terminalDropdownContainer = document.querySelector('#adyenPosTerminals');
213+
existingTerminalDropdown = terminalDropdownContainer.querySelector('#terminalList');
214+
if (existingTerminalDropdown) {
215+
terminalDropdownContainer.removeChild(existingTerminalDropdown); // Clear old terminal list
216+
}
217+
_context3.next = 5;
218+
return getConnectedTerminals();
219+
case 5:
220+
data = _context3.sent;
221+
parsedResponse = JSON.parse(data.response);
222+
uniqueTerminalIds = parsedResponse.uniqueTerminalIds;
223+
if (uniqueTerminalIds) {
224+
renderPosTerminals(uniqueTerminalIds);
225+
document.querySelector('button[value="submit-payment"]').disabled = false;
226+
}
227+
case 9:
228+
case "end":
229+
return _context3.stop();
230+
}
231+
}, _callee3);
232+
})));
233+
case 15:
234+
case "end":
235+
return _context4.stop();
236+
}
237+
}, _callee4);
238+
}));
239+
return _addStores.apply(this, arguments);
240+
}
177241
function setAmazonPayConfig(adyenPaymentMethods) {
178242
var amazonpay = adyenPaymentMethods.paymentMethods.find(function (paymentMethod) {
179243
return paymentMethod.type === 'amazonpay';
@@ -239,27 +303,27 @@ function initializeCheckout() {
239303
return _initializeCheckout.apply(this, arguments);
240304
}
241305
function _initializeCheckout() {
242-
_initializeCheckout = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
306+
_initializeCheckout = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
243307
var paymentMethodsResponse, giftCardsData, totalDiscountedAmount, giftCards, lastGiftCard, paymentMethodsWithoutGiftCards, storedPaymentMethodsWithoutGiftCards, firstPaymentMethod;
244-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
245-
while (1) switch (_context3.prev = _context3.next) {
308+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
309+
while (1) switch (_context5.prev = _context5.next) {
246310
case 0:
247-
_context3.next = 2;
311+
_context5.next = 2;
248312
return getPaymentMethods();
249313
case 2:
250-
paymentMethodsResponse = _context3.sent;
251-
_context3.next = 5;
314+
paymentMethodsResponse = _context5.sent;
315+
_context5.next = 5;
252316
return fetchGiftCards();
253317
case 5:
254-
giftCardsData = _context3.sent;
318+
giftCardsData = _context5.sent;
255319
setCheckoutConfiguration(paymentMethodsResponse);
256320
store.checkoutConfiguration.paymentMethodsResponse = _objectSpread(_objectSpread({}, paymentMethodsResponse.AdyenPaymentMethods), {}, {
257321
imagePath: paymentMethodsResponse.imagePath
258322
});
259-
_context3.next = 10;
323+
_context5.next = 10;
260324
return AdyenCheckout(store.checkoutConfiguration);
261325
case 10:
262-
store.checkout = _context3.sent;
326+
store.checkout = _context5.sent;
263327
setGiftCardContainerVisibility();
264328
totalDiscountedAmount = giftCardsData.totalDiscountedAmount, giftCards = giftCardsData.giftCards;
265329
if (giftCards !== null && giftCards !== void 0 && giftCards.length) {
@@ -281,22 +345,24 @@ function _initializeCheckout() {
281345
if (window.adyenRecurringPaymentsEnabled) {
282346
renderStoredPaymentMethods(storedPaymentMethodsWithoutGiftCards, paymentMethodsResponse.imagePath);
283347
}
284-
_context3.next = 22;
348+
_context5.next = 22;
285349
return renderPaymentMethods(paymentMethodsWithoutGiftCards, paymentMethodsResponse.imagePath, paymentMethodsResponse.adyenDescriptions);
286350
case 22:
287-
renderPosTerminals(paymentMethodsResponse.adyenConnectedTerminals);
288351
renderGiftCardLogo(paymentMethodsResponse.imagePath);
289352
firstPaymentMethod = document.querySelector('input[type=radio][name=brandCode]');
290353
if (firstPaymentMethod) {
291354
firstPaymentMethod.checked = true;
292355
helpers.displaySelectedMethod(firstPaymentMethod.value);
293356
}
357+
if (window.activeTerminalApiStores) {
358+
addStores(window.activeTerminalApiStores);
359+
}
294360
helpers.createShowConfirmationForm(window.ShowConfirmationPaymentFromComponent);
295361
case 27:
296362
case "end":
297-
return _context3.stop();
363+
return _context5.stop();
298364
}
299-
}, _callee3);
365+
}, _callee5);
300366
}));
301367
return _initializeCheckout.apply(this, arguments);
302368
}
@@ -346,19 +412,19 @@ function renderGenericComponent() {
346412
return _renderGenericComponent.apply(this, arguments);
347413
}
348414
function _renderGenericComponent() {
349-
_renderGenericComponent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
415+
_renderGenericComponent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
350416
var _store$addedGiftCards2;
351-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
352-
while (1) switch (_context4.prev = _context4.next) {
417+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
418+
while (1) switch (_context6.prev = _context6.next) {
353419
case 0:
354420
if (!(Object.keys(store.componentsObj).length !== 0)) {
355-
_context4.next = 3;
421+
_context6.next = 3;
356422
break;
357423
}
358-
_context4.next = 3;
424+
_context6.next = 3;
359425
return unmountComponents();
360426
case 3:
361-
_context4.next = 5;
427+
_context6.next = 5;
362428
return initializeCheckout();
363429
case 5:
364430
if ((_store$addedGiftCards2 = store.addedGiftCards) !== null && _store$addedGiftCards2 !== void 0 && _store$addedGiftCards2.length) {
@@ -367,9 +433,9 @@ function _renderGenericComponent() {
367433
attachGiftCardAddButtonListener();
368434
case 7:
369435
case "end":
370-
return _context4.stop();
436+
return _context6.stop();
371437
}
372-
}, _callee4);
438+
}, _callee6);
373439
}));
374440
return _renderGenericComponent.apply(this, arguments);
375441
}
@@ -386,5 +452,6 @@ module.exports = {
386452
renderGiftCardLogo: renderGiftCardLogo,
387453
setGiftCardContainerVisibility: setGiftCardContainerVisibility,
388454
applyGiftCards: applyGiftCards,
455+
addStores: addStores,
389456
INIT_CHECKOUT_EVENT: INIT_CHECKOUT_EVENT
390457
};

cartridges/app_adyen_SFRA/cartridge/client/default/js/applePayExpress.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -372,14 +372,15 @@ function _onShippingContactSelected() {
372372
}));
373373
return _onShippingContactSelected.apply(this, arguments);
374374
}
375-
function init(_x20) {
375+
function init(_x20, _x21) {
376376
return _init.apply(this, arguments);
377377
}
378378
function _init() {
379-
_init = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12(paymentMethodsResponse) {
379+
_init = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12(paymentMethodsResponse, isExpressPdp) {
380380
return _regeneratorRuntime().wrap(function _callee12$(_context12) {
381381
while (1) switch (_context12.prev = _context12.next) {
382382
case 0:
383+
window.isExpressPdp = isExpressPdp;
383384
initializeCheckout(paymentMethodsResponse).then(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
384385
var _paymentMethodsRespon;
385386
var applePayPaymentMethod, applePayConfig, applePayButtonConfig, cartContainer, applePayButton, isApplePayButtonAvailable, expressCheckoutNodesIndex;
@@ -418,7 +419,7 @@ function _init() {
418419
}
419420
}, _callee7);
420421
}));
421-
function onAuthorized(_x21, _x22, _x23) {
422+
function onAuthorized(_x22, _x23, _x24) {
422423
return _onAuthorized3.apply(this, arguments);
423424
}
424425
return onAuthorized;
@@ -467,7 +468,7 @@ function _init() {
467468
}
468469
}, _callee8);
469470
}));
470-
function onClick(_x24, _x25) {
471+
function onClick(_x25, _x26) {
471472
return _onClick.apply(this, arguments);
472473
}
473474
return onClick;
@@ -485,7 +486,7 @@ function _init() {
485486
}
486487
}, _callee9);
487488
}));
488-
function onShippingMethodSelected(_x26, _x27, _x28) {
489+
function onShippingMethodSelected(_x27, _x28, _x29) {
489490
return _onShippingMethodSelected3.apply(this, arguments);
490491
}
491492
return onShippingMethodSelected;
@@ -503,7 +504,7 @@ function _init() {
503504
}
504505
}, _callee10);
505506
}));
506-
function onShippingContactSelected(_x29, _x30, _x31) {
507+
function onShippingContactSelected(_x30, _x31, _x32) {
507508
return _onShippingContactSelected3.apply(this, arguments);
508509
}
509510
return onShippingContactSelected;
@@ -534,7 +535,7 @@ function _init() {
534535
updateLoadedExpressMethods(APPLE_PAY);
535536
checkIfExpressMethodsAreReady();
536537
});
537-
case 1:
538+
case 2:
538539
case "end":
539540
return _context12.stop();
540541
}

cartridges/app_adyen_SFRA/cartridge/client/default/js/commons/index.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,47 @@ module.exports.getPaymentMethods = /*#__PURE__*/function () {
7777
}
7878
return getPaymentMethods;
7979
}();
80+
module.exports.getConnectedTerminals = /*#__PURE__*/function () {
81+
var _getConnectedTerminals = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
82+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
83+
while (1) switch (_context3.prev = _context3.next) {
84+
case 0:
85+
return _context3.abrupt("return", $.ajax({
86+
url: window.getConnectedTerminalsURL,
87+
type: 'post',
88+
data: {
89+
csrf_token: $('#adyen-token').val(),
90+
data: JSON.stringify({
91+
storeId: $('#storeList').val()
92+
})
93+
}
94+
}));
95+
case 1:
96+
case "end":
97+
return _context3.stop();
98+
}
99+
}, _callee3);
100+
}));
101+
function getConnectedTerminals() {
102+
return _getConnectedTerminals.apply(this, arguments);
103+
}
104+
return getConnectedTerminals;
105+
}();
80106

81107
/**
82108
* Makes an ajax call to the controller function createTemporaryBasket
83109
*/
84110
module.exports.createTemporaryBasket = /*#__PURE__*/function () {
85-
var _createTemporaryBasket = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
111+
var _createTemporaryBasket = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
86112
var productForm, data, dataFromEntries, parsedData;
87-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
88-
while (1) switch (_context3.prev = _context3.next) {
113+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
114+
while (1) switch (_context4.prev = _context4.next) {
89115
case 0:
90116
productForm = document.getElementById('express-product-form');
91117
data = new FormData(productForm);
92118
dataFromEntries = Object.fromEntries(data.entries());
93119
parsedData = JSON.parse(dataFromEntries['selected-express-product']);
94-
return _context3.abrupt("return", $.ajax({
120+
return _context4.abrupt("return", $.ajax({
95121
url: window.createTemporaryBasketUrl,
96122
type: 'post',
97123
data: {
@@ -106,9 +132,9 @@ module.exports.createTemporaryBasket = /*#__PURE__*/function () {
106132
}));
107133
case 5:
108134
case "end":
109-
return _context3.stop();
135+
return _context4.stop();
110136
}
111-
}, _callee3);
137+
}, _callee4);
112138
}));
113139
function createTemporaryBasket() {
114140
return _createTemporaryBasket.apply(this, arguments);

cartridges/app_adyen_SFRA/cartridge/forms/default/adyenPayment.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
<!--POS terminal-->
77
<field formid="terminalId" type="string" mandatory="false" />
8+
<field formid="storeId" type="string" mandatory="false" />
89

910
<!--Adyen Component-->
1011
<field formid="adyenStateData" type="string" mandatory="false" />

cartridges/app_adyen_SFRA/cartridge/static/default/js/adyenAccount.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cartridges/app_adyen_SFRA/cartridge/static/default/js/adyenCheckout.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cartridges/app_adyen_SFRA/cartridge/static/default/js/amazonPayExpressPart1.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)