From a94d92e85d74dedeedf7932b86799e4b105f802f Mon Sep 17 00:00:00 2001 From: Zenit Shkreli <69572953+zenit2001@users.noreply.github.com> Date: Wed, 4 Oct 2023 10:21:13 +0200 Subject: [PATCH] chore: added new cartridges folder --- .../cartridge/controllers/COBilling.js | 849 ++ .../cartridge/controllers/COPlaceOrder.js | 261 + .../cartridge/controllers/COSummary.js | 130 + .../controllers/PaymentInstruments.js | 307 + .../package.json | 3 + .../cartridge/forms/default/billing.xml | 77 + .../cartridge/forms/default/creditcard.xml | 74 + .../cartridge/scripts/util/Resource.ds | 253 + .../cartridge/static/default/js/app.js | 11072 ++++++++++++++++ .../cartridge/static/default/js/app.js.map | 1 + .../payment/paymentinstrumentdetails.isml | 62 + .../payment/paymentinstrumentlist.isml | 29 + .../default/checkout/billing/billing.isml | 229 + .../checkout/billing/paymentmethods.isml | 161 + .../default/checkout/summary/summary.isml | 245 + .../components/order/orderdetails.isml | 226 + .../components/order/orderdetailsemail.isml | 258 + .../app_storefront_core_changes/package.json | 3 + .../bm_adyen/cartridge/bm_adyen.properties | 4 + .../bm_adyen/cartridge/bm_extensions.xml | 113 + .../cartridge/controllers/AdyenSettings.js | 72 + .../default/css/configurationSettings.css | 497 + .../default/icons/ external-link-small.svg | 3 + .../static/default/icons/ notification.svg | 4 + .../default/icons/account-setting-tag.svg | 4 + .../static/default/icons/adyen-giving.svg | 13 + .../cartridge/static/default/icons/adyen.svg | 7 + .../static/default/icons/amazonpay.svg | 16 + .../static/default/icons/applepay.svg | 12 + .../static/default/icons/card-lock.svg | 14 + .../cartridge/static/default/icons/card.svg | 5 + .../default/icons/checkmark-circle-fill.svg | 10 + .../static/default/icons/creditcard-small.svg | 5 + .../cartridge/static/default/icons/drag.svg | 10 + .../static/default/icons/express.svg | 13 + .../default/icons/external-link-small.svg | 3 + .../static/default/icons/icon-error.svg | 4 + .../static/default/icons/icon-success.svg | 4 + .../static/default/icons/notification.svg | 4 + .../static/default/icons/paperclip.svg | 3 + .../cartridge/static/default/icons/pos.svg | 11 + .../cartridge/static/default/icons/rules.svg | 11 + .../static/default/icons/settings.svg | 16 + .../static/default/icons/terminal-3.svg | 11 + .../cartridge/static/default/icons/tools.svg | 3 + .../static/default/js/adyenSettings.js | 375 + .../default/adyenSettings/navigationCard.isml | 42 + .../default/adyenSettings/quickLinksCard.isml | 33 + .../settingCards/adyenGivingSettings.isml | 101 + .../settingCards/cardSettings.isml | 37 + .../settingCards/epmSettings.isml | 41 + .../settingCards/lpmSettings.isml | 70 + .../settingCards/optionalSettings.isml | 78 + .../settingCards/posSettings.isml | 21 + .../settingCards/requiredSettings.isml | 99 + .../settingCards/troubleshooting.isml | 57 + .../settingCards/webhookSettings.isml | 51 + .../default/adyenSettings/settings.isml | 78 + .../default/application/MenuFrame.isml | 7 + .../templates/default/custom/modules.isml | 20 + .../custom_adminmenupageextension.isml | 102 + .../custom_sitemenupageextension.isml | 106 + .../marketing/giftcertificateemail.isml | 45 + .../PaymentInstrumentInfo_ADYEN_CREDIT.isml | 54 + .../order/PaymentInstrumentInfo_Adyen.isml | 83 + ...PaymentInstrumentInfo_Adyen_Component.isml | 93 + .../templates/default/order/orderdetails.isml | 181 + .../default/order/orderemailcancellation.isml | 63 + .../default/order/orderemailconfirmation.isml | 78 + .../default/order/orderemailcss.isml | 311 + .../default/order/orderemailgeneral.isml | 64 + .../order/orderemailpaymentconfirmation.isml | 67 + .../order/orderemailshippingconfirmation.isml | 58 + .../default/order/paymentdetails.isml | 53 + .../default/order/printordergeneral.isml | 174 + .../default/order/printorderinvoice.isml | 109 + .../default/order/printorderpackingslip.isml | 163 + .../templates/default/user/miniaddress.isml | 47 + .../default/user/minicreditcard.isml | 51 + .../default/user/minishippingaddress.isml | 66 + .../templates/default/user/passwordemail.isml | 24 + .../templates/resources/adyen.properties | 3 + .../client/default/js/adyenAccount.js | 131 + .../client/default/js/adyenCheckout.js | 62 + .../client/default/js/adyenGiving.js | 50 + .../adyen_checkout/checkoutConfiguration.js | 398 + .../default/js/adyen_checkout/helpers.js | 127 + .../localesUsingInstallments.js | 3 + .../js/adyen_checkout/makePartialPayment.js | 40 + .../js/adyen_checkout/qrCodeMethods.js | 3 + .../adyen_checkout/renderGenericComponent.js | 339 + .../adyen_checkout/renderGiftcardComponent.js | 355 + .../js/adyen_checkout/renderPaymentMethod.js | 290 + .../js/adyen_checkout/validateComponents.js | 13 + .../client/default/js/amazonPayCheckout.js | 143 + .../default/js/amazonPayExpressPart1.js | 86 + .../default/js/amazonPayExpressPart2.js | 110 + .../client/default/js/applePayExpress.js | 422 + .../cartridge/client/default/js/checkout.js | 30 + .../client/default/js/checkout/billing.js | 55 + .../default/js/checkout/checkoutSFRA5.js | 469 + .../default/js/checkout/checkoutSFRA6.js | 521 + .../client/default/js/commons/index.js | 92 + .../cartridge/client/default/js/constants.js | 20 + .../js/expressPaymentMethodsVisibility.js | 46 + .../cartridge/config/countries.json | 37 + .../cartridge/controllers/Account.js | 19 + .../cartridge/controllers/Adyen.js | 92 + .../cartridge/controllers/Checkout.js | 14 + .../cartridge/controllers/CheckoutServices.js | 7 + .../cartridge/controllers/Order.js | 14 + .../controllers/PaymentInstruments.js | 51 + .../cartridge/controllers/RedirectURL.js | 18 + .../adyen/cancelPartialPaymentOrder.js | 60 + .../middlewares/adyen/checkBalance.js | 69 + .../middlewares/adyen/fetchGiftCards.js | 37 + .../adyen/getCheckoutPaymentMethods.js | 24 + .../controllers/middlewares/adyen/index.js | 36 + .../controllers/middlewares/adyen/notify.js | 39 + .../middlewares/adyen/partialPayment.js | 109 + .../middlewares/adyen/partialPaymentsOrder.js | 59 + .../middlewares/adyen/paymentFromComponent.js | 174 + .../middlewares/adyen/paymentsDetails.js | 56 + .../middlewares/adyen/redirect3ds1Response.js | 32 + .../adyen/saveExpressShopperDetails.js | 63 + .../adyen/selectShippingMethods.js | 64 + .../controllers/middlewares/adyen/sessions.js | 52 + .../middlewares/adyen/shippingMethods.js | 32 + .../middlewares/adyen/showConfirmation.js | 90 + .../adyen/showConfirmation/authorise.js | 19 + .../adyen/showConfirmation/order.js | 27 + .../adyen/showConfirmation/payment.js | 55 + .../showConfirmationPaymentFromComponent.js | 28 + .../payment.js | 111 + .../controllers/middlewares/checkout/begin.js | 81 + .../controllers/middlewares/checkout/index.js | 6 + .../adyenCheckoutServices.js | 26 + .../checkout_services/placeOrder.js | 250 + .../controllers/middlewares/index.js | 12 + .../controllers/middlewares/order/confirm.js | 55 + .../controllers/middlewares/order/index.js | 6 + .../payment_instruments/deletePayment.js | 21 + .../middlewares/payment_instruments/index.js | 8 + .../paymentProcessorIDs.js | 3 + .../payment_instruments/savePayment.js | 72 + .../cartridge/controllers/utils/clearForms.js | 66 + .../cartridge/controllers/utils/index.js | 4 + .../cartridge/forms/default/address.xml | 288 + .../cartridge/forms/default/adyenPayment.xml | 13 + .../cartridge/forms/default/billing.xml | 19 + .../cartridge/forms/default/creditCard.xml | 55 + .../cartridge/int_adyen_SFRA.properties | 4 + .../cartridge/models/createPayment.js | 39 + .../cartridge/models/payment.js | 30 + .../cartridge/scripts/adyenService.js | 65 + .../scripts/checkout/adyenHelpers.js | 30 + .../scripts/checkout/utils/getPayments.js | 35 + .../cartridge/scripts/checkout/utils/index.js | 8 + .../checkout/utils/validatePaymentMethod.js | 22 + .../cartridge/scripts/hooks.json | 20 + .../payment/processor/adyen_component.js | 24 + .../adyen_component_form_processor.js | 26 + .../hooks/payment/processor/adyen_pos.js | 15 + .../processor/adyen_pos_form_processor.js | 27 + .../processor/middlewares/authorize.js | 60 + .../payment/processor/middlewares/handle.js | 59 + .../payment/processor/middlewares/index.js | 16 + .../processor/middlewares/posAuthorize.js | 42 + .../processor/middlewares/posHandle.js | 18 + .../processor/middlewares/processForm.js | 114 + .../middlewares/savePaymentInformation.js | 55 + .../static/default/js/adyenAccount.js | 148 + .../static/default/js/adyenCheckout.js | 256 + .../static/default/js/adyenGiving.js | 101 + .../static/default/js/amazonPayCheckout.js | 160 + .../default/js/amazonPayExpressPart1.js | 148 + .../default/js/amazonPayExpressPart2.js | 101 + .../static/default/js/applePayExpress.js | 172 + .../cartridge/static/default/js/checkout.js | 448 + .../cartridge/static/default/js/constants.js | 101 + .../js/expressPaymentMethodsVisibility.js | 148 + .../int_adyen_SFRA/cartridge/store/index.js | 148 + .../default/account/payment/paymentForm.isml | 68 + .../templates/default/adyenActionModal.isml | 13 + .../default/cart/checkoutButtons.isml | 90 + .../checkout/billing/adyenComponentForm.isml | 131 + .../billing/adyenGivingComponent.isml | 37 + .../checkout/billing/adyenPosForm.isml | 7 + .../checkout/billing/billingSummary.isml | 26 + .../checkout/billing/paymentOptions.isml | 32 + .../paymentOptions/adyenComponentContent.isml | 12 + .../paymentOptions/adyenComponentSummary.isml | 23 + .../paymentOptions/adyenComponentTab.isml | 10 + .../paymentOptions/adyenPosContent.isml | 12 + .../billing/paymentOptions/adyenPosTab.isml | 10 + .../paymentOptions/paymentOptionsContent.isml | 14 + .../paymentOptions/paymentOptionsSummary.isml | 9 + .../paymentOptions/paymentOptionsTabs.isml | 10 + .../adyenConfirmationDetails.isml | 87 + .../confirmation/confirmationDetails.isml | 28 + .../confirmation/confirmationEmail.isml | 176 + .../templates/default/orderConfirmForm.isml | 18 + .../templates/resources/adyen.properties | 13 + .../templates/resources/error.properties | 2 + .../templates/resources/terminal.properties | 2 + cartridges/int_adyen_SFRA/package.json | 3 + .../cartridge/controllers/Adyen.js | 538 + .../cartridge/forms/default/adyPaydata.xml | 17 + .../int_adyen_controllers.properties | 4 + .../cartridge/js/adyenConstants.js | 9 + .../js/pages/checkout/adyen-checkout.js | 682 + .../js/pages/checkout/adyen-giving.js | 53 + .../cartridge/js/pages/checkout/amazon.js | 113 + .../cartridge/js/pages/checkout/billing.js | 248 + .../cartridge/js/pages/checkout/summary.js | 79 + .../cartridge/js/validator.js | 112 + .../cartridge/scripts/adyenSaveCreditCard.js | 29 + .../cartridge/scripts/adyenService.js | 15 + .../cartridge/scripts/hooks.json | 12 + .../payment/processor/Adyen_Component.js | 97 + .../scripts/payment/processor/Adyen_POS.js | 77 + .../adyenpaymentinstrumentdetails.isml | 34 + .../payment/paymentinstrumentlist.isml | 50 + .../templates/default/adyenOrderDetails.isml | 92 + .../templates/default/adyenRedirect.isml | 10 + .../default/adyenpaymentredirect.isml | 22 + .../checkout/billing/adyenComponent.isml | 98 + .../billing/adyenGivingComponent.isml | 33 + .../default/checkout/summary/summary.isml | 271 + .../components/order/orderdetails.isml | 226 + .../components/order/orderdetailsemail.isml | 258 + .../cartridge/templates/default/pos.isml | 22 + .../templates/resources/adyen.properties | 1 + cartridges/int_adyen_controllers/package.json | 3 + .../cartridge/adyenConstants/constants.js | 92 + .../paymentMethodDescriptions.js | 6 + .../cartridge/int_adyen_overlay.properties | 8 + .../cartridge/scripts/adyenCheckout.js | 250 + .../cartridge/scripts/adyenCustomLogs.js | 21 + .../scripts/adyenDeleteRecurringPayment.js | 54 + .../scripts/adyenGetOpenInvoiceData.js | 61 + .../scripts/adyenGetPaymentMethods.js | 76 + .../cartridge/scripts/adyenGiving.js | 87 + .../scripts/adyenLevelTwoThreeData.js | 64 + .../scripts/adyenRemovePreviousPI.js | 46 + .../cartridge/scripts/adyenSessions.js | 125 + .../cartridge/scripts/adyenTerminalApi.js | 200 + .../cartridge/scripts/adyenZeroAuth.js | 55 + .../scripts/checkNotificationAuth.js | 62 + .../scripts/config/blockedPaymentMethods.json | 7 + .../cartridge/scripts/deleteCustomObjects.js | 56 + .../cartridge/scripts/handleCustomObject.js | 272 + .../cartridge/scripts/handleNotify.js | 135 + .../cartridge/scripts/job/notifications.js | 127 + .../scripts/libs/libAuthenticationUtils.js | 80 + .../cartridge/scripts/updateSavedCards.js | 110 + .../cartridge/scripts/util/adyenConfigs.js | 131 + .../cartridge/scripts/util/adyenHelper.js | 705 + .../cartridge/scripts/util/giftCardsHelper.js | 48 + .../cartridge/scripts/util/lineItemHelper.js | 83 + .../cartridge/scripts/util/riskDataHelper.js | 47 + .../cartridge/static/default/css/adyenCss.css | 536 + .../static/default/images/ABNAMRO.png | Bin 0 -> 2015 bytes .../static/default/images/ABNAMRO.xcf | Bin 0 -> 38941 bytes .../static/default/images/ASNBANK.png | Bin 0 -> 2072 bytes .../cartridge/static/default/images/BUNQ.png | Bin 0 -> 2101 bytes .../static/default/images/FORTIS.png | Bin 0 -> 3571 bytes .../static/default/images/FRIESLANDBANK.png | Bin 0 -> 1755 bytes .../cartridge/static/default/images/ING.png | Bin 0 -> 2138 bytes .../cartridge/static/default/images/KNAB.png | Bin 0 -> 1573 bytes .../static/default/images/MONEYOU.png | Bin 0 -> 2327 bytes .../static/default/images/POSTBANK.png | Bin 0 -> 5421 bytes .../static/default/images/RABOBANK.png | Bin 0 -> 2565 bytes .../static/default/images/REGIOBANK.png | Bin 0 -> 2153 bytes .../static/default/images/SNSBANK.png | Bin 0 -> 2583 bytes .../static/default/images/SNSREGIOBANK.png | Bin 0 -> 3412 bytes .../static/default/images/TESTISSUER.png | Bin 0 -> 1701 bytes .../static/default/images/TESTISSUER10.png | Bin 0 -> 1814 bytes .../static/default/images/TESTISSUER2.png | Bin 0 -> 2285 bytes .../static/default/images/TESTISSUER3.png | Bin 0 -> 3266 bytes .../static/default/images/TESTISSUER4.png | Bin 0 -> 3628 bytes .../static/default/images/TESTISSUER5.png | Bin 0 -> 3475 bytes .../static/default/images/TESTISSUER6.png | Bin 0 -> 2319 bytes .../static/default/images/TESTISSUER7.png | Bin 0 -> 3636 bytes .../static/default/images/TESTISSUER8.png | Bin 0 -> 3301 bytes .../static/default/images/TESTISSUER9.png | Bin 0 -> 3539 bytes .../default/images/TESTISSUERCANCELLED.png | Bin 0 -> 2328 bytes .../default/images/TESTISSUERPENDING.png | Bin 0 -> 3548 bytes .../default/images/TESTISSUERREFUSED.png | Bin 0 -> 3137 bytes .../static/default/images/TRIODOSBANK.png | Bin 0 -> 2280 bytes .../default/images/VANLANSCHOTBANKIERS.png | Bin 0 -> 3074 bytes .../static/default/images/achcolombia.png | Bin 0 -> 2837 bytes .../default/images/achcolombia_small.png | Bin 0 -> 1125 bytes .../default/images/achcolombia_small_grey.png | Bin 0 -> 540 bytes .../default/images/achcolombia_tiny.png | Bin 0 -> 590 bytes .../static/default/images/advance_payment.png | Bin 0 -> 3989 bytes .../default/images/adyen_logo_large.png | Bin 0 -> 17804 bytes .../static/default/images/ae_small.png | Bin 0 -> 2058 bytes .../default/images/afterpay_default.png | Bin 0 -> 3031 bytes .../default/images/afterpay_directdebit.png | Bin 0 -> 3031 bytes .../static/default/images/ajax-loader.gif | Bin 0 -> 127714 bytes .../static/default/images/alipay.png | Bin 0 -> 2586 bytes .../static/default/images/alipay_small.png | Bin 0 -> 1639 bytes .../default/images/alipay_small_grey.png | Bin 0 -> 1612 bytes .../static/default/images/alipay_tiny.png | Bin 0 -> 1305 bytes .../static/default/images/alipay_wap.png | Bin 0 -> 2587 bytes .../default/images/alipay_wap_small.png | Bin 0 -> 1639 bytes .../cartridge/static/default/images/amex.png | Bin 0 -> 2535 bytes .../static/default/images/amex_small.png | Bin 0 -> 2058 bytes .../static/default/images/amex_small_grey.png | Bin 0 -> 705 bytes .../static/default/images/amex_tiny.png | Bin 0 -> 957 bytes .../static/default/images/apple_pay.png | Bin 0 -> 4878 bytes .../static/default/images/asiapay.png | Bin 0 -> 2836 bytes .../static/default/images/asiapay_small.png | Bin 0 -> 3614 bytes .../default/images/asiapay_small_grey.png | Bin 0 -> 3133 bytes .../static/default/images/asiapay_tiny.png | Bin 0 -> 3354 bytes .../static/default/images/autopay.png | Bin 0 -> 3201 bytes .../static/default/images/autopay_small.png | Bin 0 -> 1278 bytes .../default/images/autopay_small_grey.png | Bin 0 -> 622 bytes .../static/default/images/autopay_tiny.png | Bin 0 -> 721 bytes .../static/default/images/babygiftcard.png | Bin 0 -> 2443 bytes .../default/images/babygiftcard_small.png | Bin 0 -> 1041 bytes .../default/images/babygiftcard_tiny.png | Bin 0 -> 709 bytes .../static/default/images/baloto.png | Bin 0 -> 2659 bytes .../static/default/images/baloto_small.png | Bin 0 -> 1693 bytes .../default/images/baloto_small_grey.png | Bin 0 -> 691 bytes .../static/default/images/baloto_tiny.png | Bin 0 -> 582 bytes .../static/default/images/bancnet.png | Bin 0 -> 1844 bytes .../static/default/images/bancnet_small.png | Bin 0 -> 764 bytes .../default/images/bancnet_small_grey.png | Bin 0 -> 515 bytes .../static/default/images/bancnet_tiny.png | Bin 0 -> 746 bytes .../static/default/images/bancontact-dark.svg | 57 + .../static/default/images/bank24.png | Bin 0 -> 5494 bytes .../static/default/images/bankTransfer_AE.png | Bin 0 -> 1182 bytes .../default/images/bankTransfer_AE_small.png | Bin 0 -> 578 bytes .../default/images/bankTransfer_AE_tiny.png | Bin 0 -> 496 bytes .../static/default/images/bankTransfer_AT.png | Bin 0 -> 618 bytes .../default/images/bankTransfer_AT_small.png | Bin 0 -> 782 bytes .../default/images/bankTransfer_AT_tiny.png | Bin 0 -> 692 bytes .../static/default/images/bankTransfer_AU.png | Bin 0 -> 2435 bytes .../default/images/bankTransfer_AU_small.png | Bin 0 -> 1232 bytes .../default/images/bankTransfer_AU_tiny.png | Bin 0 -> 828 bytes .../static/default/images/bankTransfer_BE.png | Bin 0 -> 578 bytes .../default/images/bankTransfer_BE_small.png | Bin 0 -> 395 bytes .../default/images/bankTransfer_BE_tiny.png | Bin 0 -> 686 bytes .../static/default/images/bankTransfer_BG.png | Bin 0 -> 1075 bytes .../default/images/bankTransfer_BG_small.png | Bin 0 -> 546 bytes .../default/images/bankTransfer_BG_tiny.png | Bin 0 -> 538 bytes .../static/default/images/bankTransfer_CH.png | Bin 0 -> 605 bytes .../default/images/bankTransfer_CH_small.png | Bin 0 -> 688 bytes .../default/images/bankTransfer_CH_tiny.png | Bin 0 -> 641 bytes .../static/default/images/bankTransfer_CZ.png | Bin 0 -> 678 bytes .../default/images/bankTransfer_CZ_small.png | Bin 0 -> 769 bytes .../default/images/bankTransfer_CZ_tiny.png | Bin 0 -> 631 bytes .../static/default/images/bankTransfer_DE.png | Bin 0 -> 1056 bytes .../default/images/bankTransfer_DE_small.png | Bin 0 -> 512 bytes .../default/images/bankTransfer_DE_small.xcf | Bin 0 -> 2535 bytes .../default/images/bankTransfer_DE_tiny.png | Bin 0 -> 636 bytes .../static/default/images/bankTransfer_DK.png | Bin 0 -> 1115 bytes .../default/images/bankTransfer_DK_small.png | Bin 0 -> 776 bytes .../default/images/bankTransfer_DK_tiny.png | Bin 0 -> 668 bytes .../static/default/images/bankTransfer_EE.png | Bin 0 -> 1135 bytes .../default/images/bankTransfer_EE_small.png | Bin 0 -> 560 bytes .../default/images/bankTransfer_EE_tiny.png | Bin 0 -> 491 bytes .../static/default/images/bankTransfer_ES.png | Bin 0 -> 1079 bytes .../default/images/bankTransfer_ES_small.png | Bin 0 -> 755 bytes .../default/images/bankTransfer_ES_tiny.png | Bin 0 -> 624 bytes .../static/default/images/bankTransfer_FI.png | Bin 0 -> 941 bytes .../default/images/bankTransfer_FI_small.png | Bin 0 -> 773 bytes .../default/images/bankTransfer_FI_tiny.png | Bin 0 -> 698 bytes .../static/default/images/bankTransfer_FR.png | Bin 0 -> 1101 bytes .../default/images/bankTransfer_FR_small.png | Bin 0 -> 813 bytes .../default/images/bankTransfer_FR_tiny.png | Bin 0 -> 755 bytes .../static/default/images/bankTransfer_GB.png | Bin 0 -> 1773 bytes .../default/images/bankTransfer_GB_small.png | Bin 0 -> 748 bytes .../default/images/bankTransfer_GB_tiny.png | Bin 0 -> 829 bytes .../static/default/images/bankTransfer_GI.png | Bin 0 -> 1793 bytes .../default/images/bankTransfer_GI_small.png | Bin 0 -> 750 bytes .../default/images/bankTransfer_GI_tiny.png | Bin 0 -> 612 bytes .../static/default/images/bankTransfer_GR.png | Bin 0 -> 1400 bytes .../default/images/bankTransfer_GR_small.png | Bin 0 -> 866 bytes .../default/images/bankTransfer_GR_tiny.png | Bin 0 -> 718 bytes .../default/images/bankTransfer_IBAN.png | Bin 0 -> 3896 bytes .../images/bankTransfer_IBAN_small.png | Bin 0 -> 1444 bytes .../default/images/bankTransfer_IBAN_tiny.png | Bin 0 -> 836 bytes .../static/default/images/bankTransfer_IE.png | Bin 0 -> 964 bytes .../default/images/bankTransfer_IE_small.png | Bin 0 -> 493 bytes .../default/images/bankTransfer_IE_tiny.png | Bin 0 -> 595 bytes .../static/default/images/bankTransfer_IT.png | Bin 0 -> 1103 bytes .../default/images/bankTransfer_IT_small.png | Bin 0 -> 777 bytes .../default/images/bankTransfer_IT_tiny.png | Bin 0 -> 707 bytes .../static/default/images/bankTransfer_JP.png | Bin 0 -> 697 bytes .../static/default/images/bankTransfer_LU.png | Bin 0 -> 1132 bytes .../default/images/bankTransfer_LU_small.png | Bin 0 -> 775 bytes .../default/images/bankTransfer_LU_tiny.png | Bin 0 -> 674 bytes .../static/default/images/bankTransfer_MT.png | Bin 0 -> 1236 bytes .../default/images/bankTransfer_MT_small.png | Bin 0 -> 592 bytes .../default/images/bankTransfer_MT_tiny.png | Bin 0 -> 571 bytes .../static/default/images/bankTransfer_NL.png | Bin 0 -> 1175 bytes .../default/images/bankTransfer_NL_small.png | Bin 0 -> 801 bytes .../default/images/bankTransfer_NL_small.xcf | Bin 0 -> 2387 bytes .../default/images/bankTransfer_NL_tiny.png | Bin 0 -> 720 bytes .../static/default/images/bankTransfer_NO.png | Bin 0 -> 1115 bytes .../default/images/bankTransfer_NO_small.png | Bin 0 -> 909 bytes .../default/images/bankTransfer_NO_tiny.png | Bin 0 -> 817 bytes .../static/default/images/bankTransfer_PL.png | Bin 0 -> 953 bytes .../default/images/bankTransfer_PL_small.png | Bin 0 -> 455 bytes .../default/images/bankTransfer_PL_tiny.png | Bin 0 -> 445 bytes .../static/default/images/bankTransfer_PT.png | Bin 0 -> 853 bytes .../default/images/bankTransfer_PT_small.png | Bin 0 -> 536 bytes .../default/images/bankTransfer_PT_tiny.png | Bin 0 -> 578 bytes .../static/default/images/bankTransfer_SE.png | Bin 0 -> 1150 bytes .../default/images/bankTransfer_SE_small.png | Bin 0 -> 944 bytes .../default/images/bankTransfer_SE_tiny.png | Bin 0 -> 846 bytes .../static/default/images/bankTransfer_SK.png | Bin 0 -> 1137 bytes .../default/images/bankTransfer_SK_small.png | Bin 0 -> 674 bytes .../default/images/bankTransfer_SK_tiny.png | Bin 0 -> 538 bytes .../static/default/images/bankTransfer_US.png | Bin 0 -> 1264 bytes .../default/images/bankTransfer_US_small.png | Bin 0 -> 625 bytes .../default/images/bankTransfer_US_tiny.png | Bin 0 -> 680 bytes .../static/default/images/bank_ru.png | Bin 0 -> 1426 bytes .../static/default/images/bank_ru_small.png | Bin 0 -> 883 bytes .../static/default/images/bank_ru_tiny.png | Bin 0 -> 542 bytes .../static/default/images/barras.png | Bin 0 -> 2085 bytes .../static/default/images/barras_small.png | Bin 0 -> 439 bytes .../default/images/barras_small_grey.png | Bin 0 -> 279 bytes .../static/default/images/barras_tiny.png | Bin 0 -> 576 bytes .../cartridge/static/default/images/bcmc.png | Bin 0 -> 2137 bytes .../static/default/images/bcmc_small.png | Bin 0 -> 1411 bytes .../static/default/images/bcmc_small_grey.png | Bin 0 -> 1241 bytes .../static/default/images/bcmc_tiny.png | Bin 0 -> 729 bytes .../static/default/images/beelinesms.png | Bin 0 -> 6602 bytes .../static/default/images/bijcard.png | Bin 0 -> 4556 bytes .../static/default/images/bijcard_small.png | Bin 0 -> 2189 bytes .../default/images/bijcard_small_grey.png | Bin 0 -> 1804 bytes .../static/default/images/bijcard_tiny.png | Bin 0 -> 1060 bytes .../static/default/images/bill99.png | Bin 0 -> 5332 bytes .../static/default/images/bill99_small.png | Bin 0 -> 2261 bytes .../default/images/bill99_small_grey.png | Bin 0 -> 943 bytes .../static/default/images/bill99_tiny.png | Bin 0 -> 1017 bytes .../cartridge/static/default/images/boku.png | Bin 0 -> 5797 bytes .../static/default/images/boleto.png | Bin 0 -> 1934 bytes .../default/images/boletobancario_hsbc.png | Bin 0 -> 1934 bytes .../default/images/boletobancario_itau.png | Bin 0 -> 1934 bytes .../images/boletobancario_santander.png | Bin 0 -> 1934 bytes .../static/default/images/bradesco.png | Bin 0 -> 3246 bytes .../static/default/images/c_cash.png | Bin 0 -> 6498 bytes .../static/default/images/c_factuur.png | Bin 0 -> 1724 bytes .../static/default/images/c_factuur_small.png | Bin 0 -> 835 bytes .../static/default/images/c_factuur_tiny.png | Bin 0 -> 505 bytes .../static/default/images/c_invoice.png | Bin 0 -> 1724 bytes .../static/default/images/c_invoice_small.png | Bin 0 -> 835 bytes .../static/default/images/c_invoice_tiny.png | Bin 0 -> 505 bytes .../static/default/images/c_oprekening.png | Bin 0 -> 1724 bytes .../default/images/c_oprekening_small.png | Bin 0 -> 835 bytes .../default/images/c_oprekening_tiny.png | Bin 0 -> 505 bytes .../static/default/images/c_paypal.png | Bin 0 -> 2934 bytes .../static/default/images/c_paypal_small.png | Bin 0 -> 1705 bytes .../static/default/images/c_rembours.png | Bin 0 -> 4511 bytes .../default/images/c_rembours_small.png | Bin 0 -> 1894 bytes .../static/default/images/c_rembours_tiny.png | Bin 0 -> 967 bytes .../static/default/images/cancel.svg | 4 + .../cartridge/static/default/images/card.png | Bin 0 -> 2789 bytes .../static/default/images/cartebancaire.png | Bin 0 -> 4338 bytes .../static/default/images/cashticket.png | Bin 0 -> 3875 bytes .../default/images/cashticket_small.png | Bin 0 -> 1676 bytes .../default/images/cashticket_small_grey.png | Bin 0 -> 767 bytes .../static/default/images/cashticket_tiny.png | Bin 0 -> 718 bytes .../default/images/cashticket_tiny2.png | Bin 0 -> 1276 bytes .../cartridge/static/default/images/cashu.png | Bin 0 -> 2883 bytes .../static/default/images/ccavenue.png | Bin 0 -> 2002 bytes .../static/default/images/ccavenue_small.png | Bin 0 -> 905 bytes .../default/images/ccavenue_small_grey.png | Bin 0 -> 482 bytes .../static/default/images/ccavenue_tiny.png | Bin 0 -> 776 bytes .../static/default/images/cellpaypoint.png | Bin 0 -> 3228 bytes .../default/images/cellpaypoint_small.png | Bin 0 -> 1709 bytes .../images/cellpaypoint_small_grey.png | Bin 0 -> 705 bytes .../default/images/cellpaypoint_tiny.png | Bin 0 -> 712 bytes .../static/default/images/ciberpay.png | Bin 0 -> 6398 bytes .../static/default/images/contact_ru.png | Bin 0 -> 2941 bytes .../static/default/images/creditcard.png | Bin 0 -> 5926 bytes .../static/default/images/creditcards.png | Bin 0 -> 3810 bytes .../cartridge/static/default/images/cup.png | Bin 0 -> 4736 bytes .../static/default/images/cup_small.png | Bin 0 -> 1142 bytes .../static/default/images/dankort.png | Bin 0 -> 659 bytes .../static/default/images/dc_small.png | Bin 0 -> 1429 bytes .../static/default/images/di_small.png | Bin 0 -> 1862 bytes .../static/default/images/dineromail.png | Bin 0 -> 2259 bytes .../default/images/dineromail_ar_amex.gif | Bin 0 -> 1961 bytes .../images/dineromail_ar_argencard.gif | Bin 0 -> 384 bytes .../images/dineromail_ar_banktransfer.gif | Bin 0 -> 916 bytes .../images/dineromail_ar_bapropago.gif | Bin 0 -> 678 bytes .../default/images/dineromail_ar_cabal.gif | Bin 0 -> 368 bytes .../images/dineromail_ar_cobroexpress.gif | Bin 0 -> 750 bytes .../default/images/dineromail_ar_dm.gif | Bin 0 -> 1468 bytes .../default/images/dineromail_ar_italcred.gif | Bin 0 -> 379 bytes .../default/images/dineromail_ar_master.gif | Bin 0 -> 1907 bytes .../images/dineromail_ar_pagofacil.gif | Bin 0 -> 780 bytes .../default/images/dineromail_ar_rapipago.gif | Bin 0 -> 482 bytes .../images/dineromail_ar_tshopping.gif | Bin 0 -> 916 bytes .../default/images/dineromail_ar_visa.gif | Bin 0 -> 1781 bytes .../images/dineromail_ar_visa_hipotecario.gif | Bin 0 -> 646 bytes .../default/images/dineromail_br_amex.gif | Bin 0 -> 1961 bytes .../default/images/dineromail_br_aura.gif | Bin 0 -> 1656 bytes .../images/dineromail_br_bbancario.gif | Bin 0 -> 1872 bytes .../default/images/dineromail_br_diners.gif | Bin 0 -> 1547 bytes .../default/images/dineromail_br_dm.gif | Bin 0 -> 1836 bytes .../images/dineromail_br_hipercard.gif | Bin 0 -> 1594 bytes .../default/images/dineromail_br_master.gif | Bin 0 -> 1907 bytes .../default/images/dineromail_br_oipaggo.gif | Bin 0 -> 1850 bytes .../default/images/dineromail_br_visa.gif | Bin 0 -> 1781 bytes .../default/images/dineromail_cl_amex.gif | Bin 0 -> 1543 bytes .../default/images/dineromail_cl_diners.gif | Bin 0 -> 1236 bytes .../default/images/dineromail_cl_dm.gif | Bin 0 -> 1951 bytes .../default/images/dineromail_cl_magna.gif | Bin 0 -> 1067 bytes .../default/images/dineromail_cl_master.gif | Bin 0 -> 1469 bytes .../default/images/dineromail_cl_presto.gif | Bin 0 -> 858 bytes .../default/images/dineromail_cl_ripley.gif | Bin 0 -> 1293 bytes .../default/images/dineromail_cl_servipag.gif | Bin 0 -> 1016 bytes .../default/images/dineromail_cl_visa.gif | Bin 0 -> 1521 bytes .../default/images/dineromail_mx_7eleven.gif | Bin 0 -> 974 bytes .../default/images/dineromail_mx_amex.gif | Bin 0 -> 1961 bytes .../images/dineromail_mx_bancomer_tc.gif | Bin 0 -> 424 bytes .../default/images/dineromail_mx_dm.gif | Bin 0 -> 1486 bytes .../default/images/dineromail_mx_hsbc_tb.gif | Bin 0 -> 454 bytes .../default/images/dineromail_mx_ixe_tc.gif | Bin 0 -> 824 bytes .../images/dineromail_mx_otherbank_tc.gif | Bin 0 -> 1207 bytes .../default/images/dineromail_mx_oxxo.gif | Bin 0 -> 513 bytes .../images/dineromail_mx_santander_tc.gif | Bin 0 -> 545 bytes .../images/dineromail_mx_scotiabank_tc.gif | Bin 0 -> 414 bytes .../default/images/dineromail_small.png | Bin 0 -> 1027 bytes .../static/default/images/dineromail_tiny.png | Bin 0 -> 574 bytes .../static/default/images/diners.png | Bin 0 -> 1711 bytes .../static/default/images/diners_small.png | Bin 0 -> 1429 bytes .../default/images/diners_small_grey.png | Bin 0 -> 1031 bytes .../static/default/images/diners_tiny.png | Bin 0 -> 892 bytes .../static/default/images/directEbanking.png | Bin 0 -> 1860 bytes .../default/images/directEbanking_axa.png | Bin 0 -> 2546 bytes .../default/images/directEbanking_cbc.png | Bin 0 -> 2133 bytes .../default/images/directEbanking_de.png | Bin 0 -> 1860 bytes .../default/images/directEbanking_de_grey.png | Bin 0 -> 1767 bytes .../images/directEbanking_de_small.png | Bin 0 -> 1877 bytes .../default/images/directEbanking_de_tiny.png | Bin 0 -> 968 bytes .../default/images/directEbanking_dexia.png | Bin 0 -> 3077 bytes .../default/images/directEbanking_fintro.png | Bin 0 -> 3267 bytes .../default/images/directEbanking_fortis.png | Bin 0 -> 3609 bytes .../default/images/directEbanking_grey.png | Bin 0 -> 1767 bytes .../default/images/directEbanking_ing.png | Bin 0 -> 2545 bytes .../default/images/directEbanking_kbc.png | Bin 0 -> 2087 bytes .../default/images/directEbanking_small.png | Bin 0 -> 692 bytes .../images/directEbanking_small_grey.png | Bin 0 -> 427 bytes .../default/images/directEbanking_tiny.png | Bin 0 -> 455 bytes .../images/directdebit_BR_bancodobrasil.png | Bin 0 -> 4412 bytes .../images/directdebit_BR_bradesco.png | Bin 0 -> 3246 bytes .../default/images/directdebit_BR_caixa.png | Bin 0 -> 2461 bytes .../default/images/directdebit_BR_hsbc.png | Bin 0 -> 1248 bytes .../default/images/directdebit_BR_itau.png | Bin 0 -> 3600 bytes .../images/directdebit_BR_santander.png | Bin 0 -> 1708 bytes .../static/default/images/directdebit_NL.png | Bin 0 -> 2599 bytes .../default/images/directdebit_NL_small.png | Bin 0 -> 1645 bytes .../default/images/directdebit_NL_tiny.png | Bin 0 -> 902 bytes .../static/default/images/discover.png | Bin 0 -> 3435 bytes .../static/default/images/discover_small.png | Bin 0 -> 1862 bytes .../default/images/discover_small_grey.png | Bin 0 -> 1550 bytes .../static/default/images/discover_tiny.png | Bin 0 -> 1009 bytes .../cartridge/static/default/images/doku.png | Bin 0 -> 3057 bytes .../static/default/images/doku_alfamart.png | Bin 0 -> 2719 bytes .../images/doku_atm_mandiri_va_lite.png | Bin 0 -> 3896 bytes .../default/images/doku_mandiri_clickpay.png | Bin 0 -> 5352 bytes .../default/images/doku_permata_lite_atm.png | Bin 0 -> 1551 bytes .../static/default/images/doku_wallet.png | Bin 0 -> 3265 bytes .../static/default/images/dotpay.png | Bin 0 -> 2548 bytes .../static/default/images/dotpay_inteligo.png | Bin 0 -> 3563 bytes .../static/default/images/dotpay_moje.png | Bin 0 -> 5524 bytes .../default/images/dotpay_mtransfer.png | Bin 0 -> 4097 bytes .../default/images/dotpay_multitransfer.png | Bin 0 -> 4198 bytes .../static/default/images/dotpay_nordea.png | Bin 0 -> 3130 bytes .../static/default/images/dotpay_potzta.png | Bin 0 -> 8558 bytes .../static/default/images/dotpay_przelewz.png | Bin 0 -> 4325 bytes .../default/images/dotpay_przelewz24.png | Bin 0 -> 3426 bytes .../static/default/images/dotpay_small.png | Bin 0 -> 1166 bytes .../static/default/images/dotpay_tiny.png | Bin 0 -> 605 bytes .../static/default/images/dotpay_zabka.png | Bin 0 -> 5531 bytes .../default/images/dragonpay_ebanking.png | Bin 0 -> 3321 bytes .../static/default/images/ebanking_FI.png | Bin 0 -> 3426 bytes .../default/images/ebanking_FI_aktia.gif | Bin 0 -> 20793 bytes .../images/ebanking_FI_alandsbanken.png | Bin 0 -> 1168 bytes .../images/ebanking_FI_handelsbanken.png | Bin 0 -> 1917 bytes .../default/images/ebanking_FI_nordea.png | Bin 0 -> 2330 bytes .../images/ebanking_FI_osuuspankki.png | Bin 0 -> 2819 bytes .../default/images/ebanking_FI_sampo.png | Bin 0 -> 2858 bytes .../default/images/ebanking_FI_small.png | Bin 0 -> 1836 bytes .../default/images/ebanking_FI_spankki.png | Bin 0 -> 1665 bytes .../default/images/ebanking_FI_tapiola.png | Bin 0 -> 1254 bytes .../default/images/ebanking_FI_tiny.png | Bin 0 -> 1336 bytes .../static/default/images/ebetalning.png | Bin 0 -> 419 bytes .../static/default/images/ebucks.png | Bin 0 -> 2710 bytes .../static/default/images/ebucks_small.png | Bin 0 -> 968 bytes .../default/images/ebucks_small_tiny.png | Bin 0 -> 458 bytes .../static/default/images/ebucks_tiny.png | Bin 0 -> 829 bytes .../cartridge/static/default/images/elba.png | Bin 0 -> 1317 bytes .../static/default/images/elecsnet.png | Bin 0 -> 6959 bytes .../cartridge/static/default/images/elo.png | Bin 0 -> 4862 bytes .../static/default/images/elo_small.png | Bin 0 -> 2053 bytes .../cartridge/static/default/images/elv.png | Bin 0 -> 2890 bytes .../static/default/images/elv_small.png | Bin 0 -> 1270 bytes .../static/default/images/elv_tiny.png | Bin 0 -> 691 bytes .../cartridge/static/default/images/empty.png | Bin 0 -> 157 bytes .../cartridge/static/default/images/enets.png | Bin 0 -> 1213 bytes .../default/images/entertainmentcard.png | Bin 0 -> 2709 bytes .../images/entertainmentcard_small.png | Bin 0 -> 1714 bytes .../images/entertainmentcard_small_grey.png | Bin 0 -> 1596 bytes .../default/images/entertainmentcard_tiny.png | Bin 0 -> 860 bytes .../static/default/images/forwardmobile.png | Bin 0 -> 8770 bytes .../cartridge/static/default/images/frame.png | Bin 0 -> 533 bytes .../static/default/images/gallgall.png | Bin 0 -> 4339 bytes .../static/default/images/gallgall_small.png | Bin 0 -> 1765 bytes .../default/images/gallgall_small_tiny.png | Bin 0 -> 753 bytes .../static/default/images/gallgall_tiny.png | Bin 0 -> 959 bytes .../static/default/images/giropay.png | Bin 0 -> 1859 bytes .../static/default/images/giropay_small.png | Bin 0 -> 1240 bytes .../default/images/giropay_small_grey.png | Bin 0 -> 668 bytes .../static/default/images/giropay_tiny.png | Bin 0 -> 730 bytes .../cartridge/static/default/images/givex.png | Bin 0 -> 3291 bytes .../static/default/images/globegcash.png | Bin 0 -> 4439 bytes .../default/images/globegcash_small.png | Bin 0 -> 1801 bytes .../default/images/globegcash_small_grey.png | Bin 0 -> 875 bytes .../static/default/images/globegcash_tiny.png | Bin 0 -> 988 bytes .../static/default/images/hansabank.png | Bin 0 -> 1477 bytes .../cartridge/static/default/images/hdfc.png | Bin 0 -> 2959 bytes .../static/default/images/hdfc_small.png | Bin 0 -> 1076 bytes .../static/default/images/hdfc_small_grey.png | Bin 0 -> 483 bytes .../static/default/images/hdfc_tiny.png | Bin 0 -> 657 bytes .../static/default/images/hipercard.png | Bin 0 -> 2946 bytes .../static/default/images/hipercard_small.png | Bin 0 -> 1371 bytes .../static/default/images/hppPos.png | Bin 0 -> 6368 bytes .../static/default/images/hyvesafrekenen.png | Bin 0 -> 4324 bytes .../default/images/hyvesafrekenen_small.png | Bin 0 -> 1268 bytes .../default/images/hyvesafrekenen_tiny.png | Bin 0 -> 722 bytes .../cartridge/static/default/images/ideal.png | Bin 0 -> 988 bytes .../static/default/images/ideal_small.png | Bin 0 -> 1262 bytes .../static/default/images/ideal_tiny.png | Bin 0 -> 732 bytes .../static/default/images/img_trans.gif | Bin 0 -> 43 bytes .../static/default/images/interac.png | Bin 0 -> 1777 bytes .../static/default/images/interac_small.png | Bin 0 -> 1105 bytes .../static/default/images/interac_tiny.png | Bin 0 -> 769 bytes .../static/default/images/ipay88.png | Bin 0 -> 2662 bytes .../static/default/images/ipay88_small.png | Bin 0 -> 1593 bytes .../default/images/ipay88_small_grey.png | Bin 0 -> 705 bytes .../static/default/images/ipay88_tiny.png | Bin 0 -> 963 bytes .../cartridge/static/default/images/ivr.png | Bin 0 -> 2796 bytes .../static/default/images/ivrLandline.png | Bin 0 -> 2796 bytes .../default/images/ivrLandline_small.png | Bin 0 -> 1447 bytes .../default/images/ivrLandline_tiny.png | Bin 0 -> 721 bytes .../static/default/images/ivrMobile.png | Bin 0 -> 2416 bytes .../static/default/images/ivrMobile_small.png | Bin 0 -> 1026 bytes .../static/default/images/ivrMobile_tiny.png | Bin 0 -> 537 bytes .../static/default/images/ivr_small.png | Bin 0 -> 1447 bytes .../static/default/images/ivr_tiny.png | Bin 0 -> 721 bytes .../cartridge/static/default/images/jcb.png | Bin 0 -> 1658 bytes .../static/default/images/jcb_small.png | Bin 0 -> 1325 bytes .../static/default/images/jcb_small_grey.png | Bin 0 -> 1054 bytes .../static/default/images/jcb_tiny.png | Bin 0 -> 862 bytes .../static/default/images/kadowereld.png | Bin 0 -> 3720 bytes .../default/images/kadowereld_small.png | Bin 0 -> 1534 bytes .../default/images/kadowereld_small_grey.png | Bin 0 -> 901 bytes .../static/default/images/kadowereld_tiny.png | Bin 0 -> 757 bytes .../default/images/kcp_banktransfer.png | Bin 0 -> 992 bytes .../static/default/images/kcp_creditcard.png | Bin 0 -> 4052 bytes .../static/default/images/kcp_payco.png | Bin 0 -> 1807 bytes .../static/default/images/klarna.png | Bin 0 -> 1946 bytes .../static/default/images/klarna_small.png | Bin 0 -> 930 bytes .../static/default/images/klarna_tiny.png | Bin 0 -> 477 bytes .../static/default/images/konbini.png | Bin 0 -> 4963 bytes .../cartridge/static/default/images/laser.png | Bin 0 -> 2769 bytes .../static/default/images/laser_small.png | Bin 0 -> 1319 bytes .../default/images/laser_small_grey.png | Bin 0 -> 1021 bytes .../static/default/images/laser_tiny.png | Bin 0 -> 857 bytes .../static/default/images/maestro-dark.svg | 66 + .../static/default/images/maestro.png | Bin 0 -> 3503 bytes .../static/default/images/maestro_small.png | Bin 0 -> 1722 bytes .../default/images/maestro_small_grey.png | Bin 0 -> 684 bytes .../static/default/images/maestro_tiny.png | Bin 0 -> 861 bytes .../static/default/images/maestrouk.png | Bin 0 -> 3503 bytes .../static/default/images/maestrouk_small.png | Bin 0 -> 1722 bytes .../default/images/maestrouk_small_grey.png | Bin 0 -> 684 bytes .../static/default/images/maestrouk_tiny.png | Bin 0 -> 861 bytes .../cartridge/static/default/images/mc.png | Bin 0 -> 1680 bytes .../static/default/images/mc_small.png | Bin 0 -> 862 bytes .../static/default/images/mc_small_grey.png | Bin 0 -> 822 bytes .../static/default/images/mc_tiny.png | Bin 0 -> 590 bytes .../static/default/images/mercadopago.png | Bin 0 -> 3303 bytes .../static/default/images/mimoney.png | Bin 0 -> 2160 bytes .../static/default/images/mimoney_small.png | Bin 0 -> 1168 bytes .../default/images/mimoney_small_grey.png | Bin 0 -> 566 bytes .../static/default/images/mimoney_tiny.png | Bin 0 -> 539 bytes .../default/images/molpay_ebanking_TH.png | Bin 0 -> 992 bytes .../static/default/images/molpay_paysbuy.png | Bin 0 -> 3259 bytes .../static/default/images/moneta.png | Bin 0 -> 1055 bytes .../static/default/images/moneybookers.png | Bin 0 -> 20071 bytes .../default/images/moneybookers_small.png | Bin 0 -> 18854 bytes .../default/images/moneybookers_tiny.png | Bin 0 -> 18178 bytes .../static/default/images/moneymail.png | Bin 0 -> 6312 bytes .../static/default/images/moneymoney.png | Bin 0 -> 7261 bytes .../static/default/images/multibanco.png | Bin 0 -> 3467 bytes .../static/default/images/nedbank.png | Bin 0 -> 2951 bytes .../static/default/images/nedbank_small.png | Bin 0 -> 854 bytes .../default/images/nedbank_small_grey.png | Bin 0 -> 403 bytes .../static/default/images/nedbank_tiny.png | Bin 0 -> 657 bytes .../static/default/images/onebip.png | Bin 0 -> 2848 bytes .../static/default/images/online_RU.png | Bin 0 -> 1601 bytes .../static/default/images/online_RU_small.png | Bin 0 -> 969 bytes .../static/default/images/online_RU_tiny.png | Bin 0 -> 601 bytes .../default/images/online_transfer_de.png | Bin 0 -> 2073 bytes .../static/default/images/openinvoice.png | Bin 0 -> 1724 bytes .../static/default/images/openinvoice.xcf | Bin 0 -> 4543 bytes .../default/images/openinvoice_small.png | Bin 0 -> 835 bytes .../default/images/openinvoice_tiny.png | Bin 0 -> 505 bytes .../static/default/images/pagosonline.png | Bin 0 -> 2992 bytes .../default/images/pagosonline_small.png | Bin 0 -> 1326 bytes .../default/images/pagosonline_small_grey.png | Bin 0 -> 583 bytes .../default/images/pagosonline_tiny.png | Bin 0 -> 663 bytes .../static/default/images/paypal.png | Bin 0 -> 2934 bytes .../static/default/images/paypal_small.png | Bin 0 -> 1705 bytes .../static/default/images/paypal_tiny.png | Bin 0 -> 1393 bytes .../static/default/images/paysafecard.png | Bin 0 -> 2813 bytes .../default/images/paysafecard_small.png | Bin 0 -> 3563 bytes .../default/images/paysafecard_small_grey.png | Bin 0 -> 3082 bytes .../default/images/paysafecard_tiny.png | Bin 0 -> 3159 bytes .../static/default/images/payshop.png | Bin 0 -> 3242 bytes .../cartridge/static/default/images/payu.png | Bin 0 -> 2225 bytes .../static/default/images/payu_IN.png | Bin 0 -> 2837 bytes .../static/default/images/payu_small.png | Bin 0 -> 1102 bytes .../static/default/images/payu_small_grey.png | Bin 0 -> 540 bytes .../static/default/images/payu_tiny.png | Bin 0 -> 568 bytes .../static/default/images/plastix.png | Bin 0 -> 1849 bytes .../static/default/images/plastix_small.png | Bin 0 -> 936 bytes .../default/images/plastix_small_grey.png | Bin 0 -> 804 bytes .../static/default/images/plastix_tiny.png | Bin 0 -> 559 bytes .../static/default/images/platezhru.png | Bin 0 -> 7161 bytes .../static/default/images/platika.png | Bin 0 -> 7520 bytes .../static/default/images/pm_gloss.png | Bin 0 -> 71187 bytes .../cartridge/static/default/images/poli.png | Bin 0 -> 2845 bytes .../cartridge/static/default/images/pos.png | Bin 0 -> 102931 bytes .../static/default/images/postoffice_ru.png | Bin 0 -> 2231 bytes .../cartridge/static/default/images/pps.png | Bin 0 -> 3839 bytes .../static/default/images/pps_small.png | Bin 0 -> 1498 bytes .../static/default/images/pps_small_grey.png | Bin 0 -> 613 bytes .../static/default/images/pps_tiny.png | Bin 0 -> 891 bytes .../cartridge/static/default/images/pse.png | Bin 0 -> 4343 bytes .../static/default/images/pse_small.png | Bin 0 -> 1971 bytes .../static/default/images/pse_small_grey.png | Bin 0 -> 816 bytes .../static/default/images/pse_tiny.png | Bin 0 -> 968 bytes .../cartridge/static/default/images/qiwi.png | Bin 0 -> 8689 bytes .../static/default/images/qiwiwallet.png | Bin 0 -> 2446 bytes .../static/default/images/ratepay.png | Bin 0 -> 3692 bytes .../static/default/images/ratepay_small.png | Bin 0 -> 1656 bytes .../static/default/images/refresh.png | Bin 0 -> 2831 bytes .../static/default/images/safetypay.png | Bin 0 -> 2061 bytes .../static/default/images/safetypay_small.png | Bin 0 -> 921 bytes .../default/images/safetypay_small_grey.png | Bin 0 -> 419 bytes .../static/default/images/safetypay_tiny.png | Bin 0 -> 612 bytes .../static/default/images/sendEmail.png | Bin 0 -> 2966 bytes .../static/default/images/sendEmail_small.png | Bin 0 -> 1242 bytes .../static/default/images/sepadirectdebit.png | Bin 0 -> 3410 bytes .../static/default/images/sm_small.png | Bin 0 -> 1722 bytes .../cartridge/static/default/images/sms.png | Bin 0 -> 4898 bytes .../static/default/images/sms_small.png | Bin 0 -> 1661 bytes .../static/default/images/sms_tiny.png | Bin 0 -> 864 bytes .../cartridge/static/default/images/solo.png | Bin 0 -> 2671 bytes .../static/default/images/solo_small.png | Bin 0 -> 1055 bytes .../static/default/images/solo_small_grey.png | Bin 0 -> 866 bytes .../static/default/images/solo_tiny.png | Bin 0 -> 612 bytes .../static/default/images/switch.png | Bin 0 -> 2379 bytes .../static/default/images/template.xcf | Bin 0 -> 9500 bytes .../static/default/images/tenpay.png | Bin 0 -> 3028 bytes .../static/default/images/tenpay_small.png | Bin 0 -> 4046 bytes .../default/images/tenpay_small_grey.png | Bin 0 -> 3370 bytes .../static/default/images/tenpay_tiny.png | Bin 0 -> 783 bytes .../static/default/images/terminal_RU.png | Bin 0 -> 2866 bytes .../default/images/terminal_RU_small.png | Bin 0 -> 1273 bytes .../default/images/terminal_RU_tiny.png | Bin 0 -> 620 bytes .../static/default/images/tnt_rembours.png | Bin 0 -> 4542 bytes .../default/images/tnt_rembours_small.png | Bin 0 -> 1894 bytes .../static/default/images/trustly.png | Bin 0 -> 3129 bytes .../static/default/images/trustpay.png | Bin 0 -> 3313 bytes .../static/default/images/uhisbank.png | Bin 0 -> 938 bytes .../cartridge/static/default/images/ukash.png | Bin 0 -> 4687 bytes .../static/default/images/ukash_small.png | Bin 0 -> 2515 bytes .../default/images/ukash_small_grey.png | Bin 0 -> 1620 bytes .../static/default/images/ukash_tiny.png | Bin 0 -> 1673 bytes .../static/default/images/unionpay.png | Bin 0 -> 4736 bytes .../static/default/images/unionpay_small.png | Bin 0 -> 1634 bytes .../default/images/unionpay_small_grey.png | Bin 0 -> 674 bytes .../static/default/images/unionpay_tiny.png | Bin 0 -> 1142 bytes .../static/default/images/unknown.png | Bin 0 -> 638 bytes .../static/default/images/unknown_small.png | Bin 0 -> 397 bytes .../static/default/images/vi_small.png | Bin 0 -> 1413 bytes .../cartridge/static/default/images/vias.png | Bin 0 -> 2399 bytes .../static/default/images/vias_small.png | Bin 0 -> 1503 bytes .../static/default/images/vias_small_grey.png | Bin 0 -> 573 bytes .../static/default/images/vias_tiny.png | Bin 0 -> 869 bytes .../static/default/images/visa-electron.png | Bin 0 -> 3668 bytes .../default/images/visa-electron_small.png | Bin 0 -> 2565 bytes .../images/visa-electron_small_grey.png | Bin 0 -> 2000 bytes .../cartridge/static/default/images/visa.png | Bin 0 -> 2973 bytes .../static/default/images/visa_fr.png | Bin 0 -> 4986 bytes .../static/default/images/visa_fr_small.png | Bin 0 -> 2075 bytes .../default/images/visa_fr_small_grey.png | Bin 0 -> 704 bytes .../static/default/images/visa_small.png | Bin 0 -> 1919 bytes .../static/default/images/visa_small_grey.png | Bin 0 -> 1622 bytes .../static/default/images/visa_tiny.png | Bin 0 -> 1480 bytes .../static/default/images/vvvgiftcard.png | Bin 0 -> 5062 bytes .../default/images/vvvgiftcard_small.png | Bin 0 -> 2346 bytes .../default/images/vvvgiftcard_tiny.png | Bin 0 -> 1649 bytes .../static/default/images/wallet_RU.png | Bin 0 -> 525 bytes .../static/default/images/wallet_RU_small.png | Bin 0 -> 453 bytes .../static/default/images/wallet_RU_tiny.png | Bin 0 -> 305 bytes .../static/default/images/wallie.png | Bin 0 -> 3194 bytes .../static/default/images/wallie_small.png | Bin 0 -> 1174 bytes .../static/default/images/wallie_tiny.png | Bin 0 -> 686 bytes .../static/default/images/webmoney.png | Bin 0 -> 4473 bytes .../static/default/images/webshopgiftcard.png | Bin 0 -> 2915 bytes .../static/default/images/wechatpay.png | Bin 0 -> 2925 bytes .../static/default/images/wechatpay_small.png | Bin 0 -> 1984 bytes .../static/default/images/wiwallet.png | Bin 0 -> 2460 bytes .../static/default/images/wiwallet_small.png | Bin 0 -> 1279 bytes .../default/images/wiwallet_small_grey.png | Bin 0 -> 655 bytes .../static/default/images/wiwallet_tiny.png | Bin 0 -> 893 bytes .../static/default/images/yandexmoney.png | Bin 0 -> 1399 bytes .../static/default/images/yourgift.png | Bin 0 -> 4230 bytes .../static/default/images/yourgift_small.png | Bin 0 -> 1668 bytes .../default/images/yourgift_small_grey.png | Bin 0 -> 1309 bytes .../static/default/images/yourgift_tiny.png | Bin 0 -> 938 bytes .../templates/default/adyen/error.isml | 8 + .../cartridge/templates/default/notify.isml | 1 + .../templates/default/notifyError.isml | 1 + .../templates/resources/adyen.properties | 5 + .../templates/resources/checkout.properties | 19 + .../templates/resources/creditCard.properties | 4 + .../templates/resources/require.properties | 115 + cartridges/int_custom_cartridge/package.json | 1 + 842 files changed, 34998 insertions(+) create mode 100644 cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COBilling.js create mode 100644 cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COPlaceOrder.js create mode 100644 cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COSummary.js create mode 100644 cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/PaymentInstruments.js create mode 100644 cartridges/adyen_controllers_changes/app_storefront_controllers_changes/package.json create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/billing.xml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/creditcard.xml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/scripts/util/Resource.ds create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/static/default/js/app.js create mode 100755 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/static/default/js/app.js.map create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/account/payment/paymentinstrumentdetails.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/account/payment/paymentinstrumentlist.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/checkout/billing/billing.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/checkout/billing/paymentmethods.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/checkout/summary/summary.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/components/order/orderdetails.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/templates/default/components/order/orderdetailsemail.isml create mode 100644 cartridges/adyen_controllers_changes/app_storefront_core_changes/package.json create mode 100644 cartridges/bm_adyen/cartridge/bm_adyen.properties create mode 100644 cartridges/bm_adyen/cartridge/bm_extensions.xml create mode 100644 cartridges/bm_adyen/cartridge/controllers/AdyenSettings.js create mode 100644 cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/ external-link-small.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/ notification.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/account-setting-tag.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/adyen-giving.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/adyen.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/amazonpay.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/applepay.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/card-lock.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/card.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/checkmark-circle-fill.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/creditcard-small.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/drag.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/express.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/external-link-small.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/icon-error.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/icon-success.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/notification.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/paperclip.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/pos.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/rules.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/settings.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/terminal-3.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/icons/tools.svg create mode 100644 cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/quickLinksCard.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/adyenGivingSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/cardSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/epmSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/lpmSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/posSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/requiredSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/application/MenuFrame.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/custom/modules.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/extensions/custom_adminmenupageextension.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/extensions/custom_sitemenupageextension.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/marketing/giftcertificateemail.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/PaymentInstrumentInfo_ADYEN_CREDIT.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/PaymentInstrumentInfo_Adyen.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/PaymentInstrumentInfo_Adyen_Component.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderdetails.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderemailcancellation.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderemailconfirmation.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderemailcss.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderemailgeneral.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderemailpaymentconfirmation.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/orderemailshippingconfirmation.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/paymentdetails.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/printordergeneral.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/printorderinvoice.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/order/printorderpackingslip.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/user/miniaddress.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/user/minicreditcard.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/user/minishippingaddress.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/default/user/passwordemail.isml create mode 100644 cartridges/bm_adyen/cartridge/templates/resources/adyen.properties create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenAccount.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenCheckout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/localesUsingInstallments.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/qrCodeMethods.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderPaymentMethod.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/validateComponents.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/amazonPayCheckout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/amazonPayExpressPart1.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/amazonPayExpressPart2.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/applePayExpress.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/checkout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/checkout/billing.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/checkout/checkoutSFRA5.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/checkout/checkoutSFRA6.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/client/default/js/expressPaymentMethodsVisibility.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/config/countries.json create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/Account.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/Adyen.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/Checkout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/CheckoutServices.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/Order.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/PaymentInstruments.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/RedirectURL.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/cancelPartialPaymentOrder.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/checkBalance.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/fetchGiftCards.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/getCheckoutPaymentMethods.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPaymentsOrder.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentsDetails.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/redirect3ds1Response.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/saveExpressShopperDetails.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/selectShippingMethods.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/sessions.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/shippingMethods.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/payment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/checkout/begin.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/checkout/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/checkout_services/adyenCheckoutServices.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/checkout_services/placeOrder.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/payment_instruments/deletePayment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/payment_instruments/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/payment_instruments/paymentProcessorIDs.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/payment_instruments/savePayment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/utils/clearForms.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/controllers/utils/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/forms/default/address.xml create mode 100644 cartridges/int_adyen_SFRA/cartridge/forms/default/adyenPayment.xml create mode 100644 cartridges/int_adyen_SFRA/cartridge/forms/default/billing.xml create mode 100644 cartridges/int_adyen_SFRA/cartridge/forms/default/creditCard.xml create mode 100755 cartridges/int_adyen_SFRA/cartridge/int_adyen_SFRA.properties create mode 100644 cartridges/int_adyen_SFRA/cartridge/models/createPayment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/models/payment.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/checkout/adyenHelpers.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/checkout/utils/getPayments.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/checkout/utils/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/checkout/utils/validatePaymentMethod.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks.json create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/adyen_component.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/adyen_component_form_processor.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/adyen_pos.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/adyen_pos_form_processor.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/authorize.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/posAuthorize.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/posHandle.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/processForm.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/savePaymentInformation.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenAccount.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenCheckout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenGiving.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayCheckout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayExpressPart1.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayExpressPart2.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/applePayExpress.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/checkout.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/constants.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/static/default/js/expressPaymentMethodsVisibility.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/store/index.js create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/account/payment/paymentForm.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/adyenActionModal.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/cart/checkoutButtons.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenGivingComponent.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenPosForm.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/billingSummary.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/adyenComponentContent.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/adyenComponentSummary.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/adyenComponentTab.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/adyenPosContent.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/adyenPosTab.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/paymentOptionsContent.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/paymentOptionsSummary.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/paymentOptions/paymentOptionsTabs.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/confirmation/adyenConfirmationDetails.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/confirmation/confirmationDetails.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/confirmation/confirmationEmail.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/default/orderConfirmForm.isml create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/resources/adyen.properties create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/resources/error.properties create mode 100644 cartridges/int_adyen_SFRA/cartridge/templates/resources/terminal.properties create mode 100644 cartridges/int_adyen_SFRA/package.json create mode 100644 cartridges/int_adyen_controllers/cartridge/controllers/Adyen.js create mode 100644 cartridges/int_adyen_controllers/cartridge/forms/default/adyPaydata.xml create mode 100644 cartridges/int_adyen_controllers/cartridge/int_adyen_controllers.properties create mode 100644 cartridges/int_adyen_controllers/cartridge/js/adyenConstants.js create mode 100644 cartridges/int_adyen_controllers/cartridge/js/pages/checkout/adyen-checkout.js create mode 100644 cartridges/int_adyen_controllers/cartridge/js/pages/checkout/adyen-giving.js create mode 100644 cartridges/int_adyen_controllers/cartridge/js/pages/checkout/amazon.js create mode 100644 cartridges/int_adyen_controllers/cartridge/js/pages/checkout/billing.js create mode 100644 cartridges/int_adyen_controllers/cartridge/js/pages/checkout/summary.js create mode 100644 cartridges/int_adyen_controllers/cartridge/js/validator.js create mode 100644 cartridges/int_adyen_controllers/cartridge/scripts/adyenSaveCreditCard.js create mode 100644 cartridges/int_adyen_controllers/cartridge/scripts/adyenService.js create mode 100644 cartridges/int_adyen_controllers/cartridge/scripts/hooks.json create mode 100644 cartridges/int_adyen_controllers/cartridge/scripts/payment/processor/Adyen_Component.js create mode 100644 cartridges/int_adyen_controllers/cartridge/scripts/payment/processor/Adyen_POS.js create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/account/payment/adyenpaymentinstrumentdetails.isml create mode 100755 cartridges/int_adyen_controllers/cartridge/templates/default/account/payment/paymentinstrumentlist.isml create mode 100755 cartridges/int_adyen_controllers/cartridge/templates/default/adyenOrderDetails.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/adyenRedirect.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/adyenpaymentredirect.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/checkout/billing/adyenComponent.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/checkout/billing/adyenGivingComponent.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/checkout/summary/summary.isml create mode 100755 cartridges/int_adyen_controllers/cartridge/templates/default/components/order/orderdetails.isml create mode 100755 cartridges/int_adyen_controllers/cartridge/templates/default/components/order/orderdetailsemail.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/default/pos.isml create mode 100644 cartridges/int_adyen_controllers/cartridge/templates/resources/adyen.properties create mode 100644 cartridges/int_adyen_controllers/package.json create mode 100644 cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js create mode 100644 cartridges/int_adyen_overlay/cartridge/adyenConstants/paymentMethodDescriptions.js create mode 100644 cartridges/int_adyen_overlay/cartridge/int_adyen_overlay.properties create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenCustomLogs.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenDeleteRecurringPayment.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenGetOpenInvoiceData.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenGetPaymentMethods.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenGiving.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenLevelTwoThreeData.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenRemovePreviousPI.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenSessions.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenTerminalApi.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/adyenZeroAuth.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/config/blockedPaymentMethods.json create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/deleteCustomObjects.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/handleNotify.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/updateSavedCards.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/util/giftCardsHelper.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/util/lineItemHelper.js create mode 100644 cartridges/int_adyen_overlay/cartridge/scripts/util/riskDataHelper.js create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/css/adyenCss.css create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ABNAMRO.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ABNAMRO.xcf create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ASNBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/BUNQ.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/FORTIS.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/FRIESLANDBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ING.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/KNAB.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/MONEYOU.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/POSTBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/RABOBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/REGIOBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/SNSBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/SNSREGIOBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER10.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER2.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER3.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER4.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER5.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER6.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER7.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER8.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUER9.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUERCANCELLED.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUERPENDING.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TESTISSUERREFUSED.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/TRIODOSBANK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/VANLANSCHOTBANKIERS.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/achcolombia.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/achcolombia_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/achcolombia_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/achcolombia_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/advance_payment.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/adyen_logo_large.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ae_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/afterpay_default.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/afterpay_directdebit.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ajax-loader.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/alipay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/alipay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/alipay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/alipay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/alipay_wap.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/alipay_wap_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/amex.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/amex_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/amex_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/amex_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/apple_pay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/asiapay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/asiapay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/asiapay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/asiapay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/autopay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/autopay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/autopay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/autopay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/babygiftcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/babygiftcard_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/babygiftcard_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/baloto.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/baloto_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/baloto_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/baloto_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bancnet.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bancnet_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bancnet_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bancnet_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bancontact-dark.svg create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bank24.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AE.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AE_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AE_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AT.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AT_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AT_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AU.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AU_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_AU_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_BE.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_BE_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_BE_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_BG.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_BG_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_BG_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_CH.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_CH_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_CH_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_CZ.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_CZ_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_CZ_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DE.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DE_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DE_small.xcf create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DE_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DK_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_DK_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_EE.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_EE_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_EE_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_ES.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_ES_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_ES_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_FI.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_FI_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_FI_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_FR.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_FR_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_FR_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GB.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GB_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GB_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GI.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GI_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GI_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GR.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GR_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_GR_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IBAN.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IBAN_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IBAN_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IE.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IE_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IE_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IT.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IT_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_IT_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_JP.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_LU.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_LU_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_LU_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_MT.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_MT_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_MT_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NL.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NL_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NL_small.xcf create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NL_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NO.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NO_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_NO_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_PL.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_PL_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_PL_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_PT.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_PT_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_PT_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_SE.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_SE_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_SE_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_SK.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_SK_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_SK_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_US.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_US_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bankTransfer_US_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bank_ru.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bank_ru_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bank_ru_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/barras.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/barras_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/barras_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/barras_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bcmc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bcmc_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bcmc_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bcmc_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/beelinesms.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bijcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bijcard_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bijcard_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bijcard_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bill99.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bill99_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bill99_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bill99_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/boku.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/boleto.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/boletobancario_hsbc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/boletobancario_itau.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/boletobancario_santander.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/bradesco.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_cash.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_factuur.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_factuur_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_factuur_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_invoice.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_invoice_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_invoice_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_oprekening.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_oprekening_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_oprekening_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_paypal.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_paypal_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_rembours.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_rembours_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/c_rembours_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cancel.svg create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/card.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cartebancaire.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cashticket.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cashticket_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cashticket_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cashticket_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cashticket_tiny2.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cashu.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ccavenue.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ccavenue_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ccavenue_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ccavenue_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cellpaypoint.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cellpaypoint_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cellpaypoint_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cellpaypoint_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ciberpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/contact_ru.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/creditcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/creditcards.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cup.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/cup_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dankort.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dc_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/di_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_amex.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_argencard.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_banktransfer.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_bapropago.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_cabal.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_cobroexpress.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_dm.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_italcred.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_master.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_pagofacil.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_rapipago.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_tshopping.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_visa.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_ar_visa_hipotecario.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_amex.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_aura.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_bbancario.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_diners.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_dm.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_hipercard.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_master.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_oipaggo.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_br_visa.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_amex.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_diners.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_dm.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_magna.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_master.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_presto.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_ripley.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_servipag.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_cl_visa.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_7eleven.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_amex.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_bancomer_tc.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_dm.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_hsbc_tb.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_ixe_tc.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_otherbank_tc.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_oxxo.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_santander_tc.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_mx_scotiabank_tc.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dineromail_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/diners.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/diners_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/diners_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/diners_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_axa.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_cbc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_de.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_de_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_de_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_de_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_dexia.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_fintro.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_fortis.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_ing.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_kbc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directEbanking_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_BR_bancodobrasil.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_BR_bradesco.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_BR_caixa.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_BR_hsbc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_BR_itau.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_BR_santander.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_NL.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_NL_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/directdebit_NL_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/discover.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/discover_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/discover_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/discover_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/doku.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/doku_alfamart.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/doku_atm_mandiri_va_lite.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/doku_mandiri_clickpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/doku_permata_lite_atm.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/doku_wallet.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_inteligo.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_moje.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_mtransfer.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_multitransfer.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_nordea.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_potzta.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_przelewz.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_przelewz24.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dotpay_zabka.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/dragonpay_ebanking.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_aktia.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_alandsbanken.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_handelsbanken.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_nordea.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_osuuspankki.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_sampo.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_spankki.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_tapiola.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebanking_FI_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebetalning.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebucks.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebucks_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebucks_small_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ebucks_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elba.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elecsnet.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elo.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elo_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elv.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elv_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/elv_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/empty.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/enets.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/entertainmentcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/entertainmentcard_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/entertainmentcard_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/entertainmentcard_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/forwardmobile.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/frame.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/gallgall.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/gallgall_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/gallgall_small_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/gallgall_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/giropay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/giropay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/giropay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/giropay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/givex.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/globegcash.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/globegcash_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/globegcash_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/globegcash_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hansabank.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hdfc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hdfc_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hdfc_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hdfc_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hipercard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hipercard_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hppPos.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hyvesafrekenen.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hyvesafrekenen_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/hyvesafrekenen_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ideal.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ideal_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ideal_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/img_trans.gif create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/interac.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/interac_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/interac_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ipay88.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ipay88_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ipay88_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ipay88_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivr.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivrLandline.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivrLandline_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivrLandline_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivrMobile.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivrMobile_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivrMobile_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivr_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ivr_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/jcb.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/jcb_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/jcb_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/jcb_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kadowereld.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kadowereld_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kadowereld_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kadowereld_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kcp_banktransfer.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kcp_creditcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/kcp_payco.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/klarna.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/klarna_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/klarna_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/konbini.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/laser.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/laser_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/laser_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/laser_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestro-dark.svg create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestro.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestro_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestro_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestro_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestrouk.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestrouk_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestrouk_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/maestrouk_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mc.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mc_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mc_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mc_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mercadopago.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mimoney.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mimoney_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mimoney_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/mimoney_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/molpay_ebanking_TH.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/molpay_paysbuy.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/moneta.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/moneybookers.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/moneybookers_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/moneybookers_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/moneymail.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/moneymoney.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/multibanco.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/nedbank.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/nedbank_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/nedbank_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/nedbank_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/onebip.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/online_RU.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/online_RU_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/online_RU_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/online_transfer_de.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/openinvoice.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/openinvoice.xcf create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/openinvoice_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/openinvoice_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pagosonline.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pagosonline_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pagosonline_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pagosonline_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paypal.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paypal_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paypal_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paysafecard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paysafecard_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paysafecard_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/paysafecard_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/payshop.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/payu.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/payu_IN.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/payu_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/payu_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/payu_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/plastix.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/plastix_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/plastix_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/plastix_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/platezhru.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/platika.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pm_gloss.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/poli.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pos.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/postoffice_ru.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pps.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pps_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pps_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pps_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pse.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pse_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pse_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/pse_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/qiwi.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/qiwiwallet.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ratepay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ratepay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/refresh.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/safetypay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/safetypay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/safetypay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/safetypay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sendEmail.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sendEmail_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sepadirectdebit.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sm_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sms.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sms_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/sms_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/solo.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/solo_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/solo_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/solo_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/switch.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/template.xcf create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/tenpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/tenpay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/tenpay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/tenpay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/terminal_RU.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/terminal_RU_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/terminal_RU_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/tnt_rembours.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/tnt_rembours_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/trustly.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/trustpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/uhisbank.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ukash.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ukash_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ukash_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/ukash_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/unionpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/unionpay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/unionpay_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/unionpay_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/unknown.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/unknown_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vi_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vias.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vias_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vias_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vias_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa-electron.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa-electron_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa-electron_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa_fr.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa_fr_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa_fr_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/visa_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vvvgiftcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vvvgiftcard_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/vvvgiftcard_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wallet_RU.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wallet_RU_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wallet_RU_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wallie.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wallie_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wallie_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/webmoney.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/webshopgiftcard.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wechatpay.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wechatpay_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wiwallet.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wiwallet_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wiwallet_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/wiwallet_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/yandexmoney.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/yourgift.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/yourgift_small.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/yourgift_small_grey.png create mode 100644 cartridges/int_adyen_overlay/cartridge/static/default/images/yourgift_tiny.png create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/default/adyen/error.isml create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/default/notify.isml create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/default/notifyError.isml create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/resources/adyen.properties create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/resources/checkout.properties create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/resources/creditCard.properties create mode 100644 cartridges/int_adyen_overlay/cartridge/templates/resources/require.properties create mode 100644 cartridges/int_custom_cartridge/package.json diff --git a/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COBilling.js b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COBilling.js new file mode 100644 index 000000000..7cf14bea6 --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COBilling.js @@ -0,0 +1,849 @@ +'use strict'; + +/** + * Controller for the billing logic. It is used by both the single shipping and the multishipping + * functionality and is responsible for payment method selection and entering a billing address. + * + * @module controllers/COBilling + */ + +/* API Includes */ +var GiftCertificate = require('dw/order/GiftCertificate'); +var GiftCertificateMgr = require('dw/order/GiftCertificateMgr'); +var GiftCertificateStatusCodes = require('dw/order/GiftCertificateStatusCodes'); +var PaymentInstrument = require('dw/order/PaymentInstrument'); +var PaymentMgr = require('dw/order/PaymentMgr'); +var ProductListMgr = require('dw/customer/ProductListMgr'); +var Resource = require('dw/web/Resource'); +var Status = require('dw/system/Status'); +var StringUtils = require('dw/util/StringUtils'); +var Transaction = require('dw/system/Transaction'); +var URLUtils = require('dw/web/URLUtils'); +var Countries = require('app_storefront_core/cartridge/scripts/util/Countries'); + +/* Script Modules */ +var app = require('~/cartridge/scripts/app'); +var guard = require('~/cartridge/scripts/guard'); +// ### Custom Adyen cartridge start ### +var AdyenController = require("int_adyen_controllers/cartridge/controllers/Adyen"); +var AdyenHelper = require("int_adyen_overlay/cartridge/scripts/util/adyenHelper"); +var AdyenConfigs = require("int_adyen_overlay/cartridge/scripts/util/adyenConfigs"); +var constants = require("*/cartridge/adyenConstants/constants"); +// ### Custom Adyen cartridge end ### +var BasketMgr = require('dw/order/BasketMgr'); +var OrderMgr = require('dw/order/OrderMgr'); + +/** + * Initializes the address form. If the customer chose "use as billing + * address" option on the single shipping page the form is prepopulated with the shipping + * address, otherwise it prepopulates with the billing address that was already set. + * If neither address is available, it prepopulates with the default address of the authenticated customer. + */ +function initAddressForm(cart) { + if (app.getForm('singleshipping').object.shippingAddress.useAsBillingAddress.value === true) { + app.getForm('billing').object.billingAddress.addressFields.firstName.value = app.getForm('singleshipping').object.shippingAddress.addressFields.firstName.value; + app.getForm('billing').object.billingAddress.addressFields.lastName.value = app.getForm('singleshipping').object.shippingAddress.addressFields.lastName.value; + app.getForm('billing').object.billingAddress.addressFields.address1.value = app.getForm('singleshipping').object.shippingAddress.addressFields.address1.value; + app.getForm('billing').object.billingAddress.addressFields.address2.value = app.getForm('singleshipping').object.shippingAddress.addressFields.address2.value; + app.getForm('billing').object.billingAddress.addressFields.city.value = app.getForm('singleshipping').object.shippingAddress.addressFields.city.value; + app.getForm('billing').object.billingAddress.addressFields.postal.value = app.getForm('singleshipping').object.shippingAddress.addressFields.postal.value; + app.getForm('billing').object.billingAddress.addressFields.phone.value = app.getForm('singleshipping').object.shippingAddress.addressFields.phone.value; + app.getForm('billing').object.billingAddress.addressFields.states.state.value = app.getForm('singleshipping').object.shippingAddress.addressFields.states.state.value; + app.getForm('billing').object.billingAddress.addressFields.country.value = app.getForm('singleshipping').object.shippingAddress.addressFields.country.value; + app.getForm('billing').object.billingAddress.addressFields.phone.value = app.getForm('singleshipping').object.shippingAddress.addressFields.phone.value; + } else if (cart.getBillingAddress() !== null) { + app.getForm('billing.billingAddress.addressFields').copyFrom(cart.getBillingAddress()); + app.getForm('billing.billingAddress.addressFields.states').copyFrom(cart.getBillingAddress()); + } else if (customer.authenticated && customer.profile.addressBook.preferredAddress !== null) { + app.getForm('billing.billingAddress.addressFields').copyFrom(customer.profile.addressBook.preferredAddress); + app.getForm('billing.billingAddress.addressFields.states').copyFrom(customer.profile.addressBook.preferredAddress); + } +} + +/** + * Initializes the email address form field. If there is already a customer + * email set at the basket, that email address is used. If the + * current customer is authenticated the email address of the customer's profile + * is used. + */ +function initEmailAddress(cart) { + if (cart.getCustomerEmail() !== null) { + app.getForm('billing').object.billingAddress.email.emailAddress.value = cart.getCustomerEmail(); + } else if (customer.authenticated && customer.profile.email !== null) { + app.getForm('billing').object.billingAddress.email.emailAddress.value = customer.profile.email; + } +} + +/** + * Updates data for the billing page and renders it. + * If payment method is set to gift certificate, gets the gift certificate code from the form. + * Updates the page metadata. Gets a view and adds any passed parameters to it. Sets the Basket and ContinueURL properties. + * Renders the checkout/billing/billing template. + * @param {module:models/CartModel~CartModel} cart - A CartModel wrapping the current Basket. + * @param {object} params - (optional) if passed, added to view properties so they can be accessed in the template. + */ +// ### Custom Adyen cartridge start ### +function returnToForm(cart, params) { + var pageMeta = require('~/cartridge/scripts/meta'); + + // if the payment method is set to gift certificate get the gift certificate code from the form + if (!empty(cart.getPaymentInstrument()) && cart.getPaymentInstrument().getPaymentMethod() === PaymentInstrument.METHOD_GIFT_CERTIFICATE) { + app.getForm('billing').copyFrom({ + giftCertCode: cart.getPaymentInstrument().getGiftCertificateCode() + }); + } + pageMeta.update({ + pageTitle: Resource.msg('billing.meta.pagetitle', 'checkout', 'SiteGenesis Checkout') + }); + if (params) { + app.getView(require('~/cartridge/scripts/object').extend(params, { + Basket: cart.object, + AdyenHelper: AdyenHelper, + ContinueURL: URLUtils.https('COBilling-Billing') + })).render('checkout/billing/billing'); + } else { + app.getView({ + Basket: cart.object, + AdyenHelper: AdyenHelper, + ContinueURL: URLUtils.https('COBilling-Billing') + }).render('checkout/billing/billing'); + } +} +// ### Custom Adyen cartridge end ### + +/** + * Updates cart calculation and page information and renders the billing page. + * @transactional + * @param {module:models/CartModel~CartModel} cart - A CartModel wrapping the current Basket. + * @param {object} params - (optional) if passed, added to view properties so they can be accessed in the template. + */ +function start(cart, params) { + app.getController('COShipping').PrepareShipments(); + Transaction.wrap(function () { + cart.calculate(); + }); + var pageMeta = require('~/cartridge/scripts/meta'); + pageMeta.update({ + pageTitle: Resource.msg('billing.meta.pagetitle', 'checkout', 'SiteGenesis Checkout') + }); + returnToForm(cart, params); +} + +/** + * Initializes the credit card list by determining the saved customer payment methods for the current locale. + * @param {module:models/CartModel~CartModel} cart - A CartModel wrapping the current Basket. + * @return {object} JSON object with members ApplicablePaymentMethods and ApplicableCreditCards. + */ +function initCreditCardList(cart) { + var paymentAmount = cart.getNonGiftCertificateAmount(); + var countryCode; + var applicablePaymentMethods; + var applicablePaymentCards; + var applicableCreditCards; + countryCode = Countries.getCurrent({ + CurrentRequest: { + locale: request.locale + } + }).countryCode; + applicablePaymentMethods = PaymentMgr.getApplicablePaymentMethods(customer, countryCode, paymentAmount.value); + applicablePaymentCards = PaymentMgr.getPaymentMethod(PaymentInstrument.METHOD_CREDIT_CARD).getApplicablePaymentCards(customer, countryCode, paymentAmount.value); + app.getForm('billing').object.paymentMethods.creditCard.type.setOptions(applicablePaymentCards.iterator()); + applicableCreditCards = null; + if (customer.authenticated) { + var profile = app.getModel('Profile').get(); + if (profile) { + applicableCreditCards = profile.validateWalletPaymentInstruments(countryCode, paymentAmount.getValue()).ValidPaymentInstruments; + } + } + return { + ApplicablePaymentMethods: applicablePaymentMethods, + ApplicableCreditCards: applicableCreditCards + }; +} + +/** + * Starting point for billing. After a successful shipping setup, both COShipping + * and COShippingMultiple call this function. + */ +// ### Custom Adyen cartridge start ### +function publicStart() { + var cart = app.getModel('Cart').get(); + if (cart) { + // Initializes all forms of the billing page including: - address form - email address - coupon form + initAddressForm(cart); + initEmailAddress(cart); + + // Get the Saved Cards from Adyen to get latest saved cards + if (customer.authenticated) { + require('int_adyen_overlay/cartridge/scripts/updateSavedCards').updateSavedCards({ + CurrentCustomer: customer + }); + } + var creditCardList = initCreditCardList(cart); + var applicablePaymentMethods = creditCardList.ApplicablePaymentMethods; + var billingForm = app.getForm('billing').object; + var paymentMethods = billingForm.paymentMethods; + if (paymentMethods.valid) { + paymentMethods.selectedPaymentMethodID.setOptions(applicablePaymentMethods.iterator()); + } else { + paymentMethods.clearFormElement(); + } + app.getForm('billing.couponCode').clear(); + app.getForm('billing.giftCertCode').clear(); + var AdyenSessionsResponse = AdyenController.Sessions(customer); + + // var AdyenPosTerminals = AdyenController.GetTerminals(); + //TODO fix terminals + start(cart, { + ApplicableCreditCards: creditCardList.ApplicableCreditCards, + AdyenSessionsResponse: AdyenSessionsResponse + }); + } else { + app.getController('Cart').Show(); + } +} +// ### Custom Adyen cartridge end ### + +/** + * Adjusts gift certificate redemptions after applying coupon(s), because this changes the order total. + * Removes and then adds currently added gift certificates to reflect order total changes. + */ +function adjustGiftCertificates() { + var i, j, cart, gcIdList, gcID, gc; + cart = app.getModel('Cart').get(); + if (cart) { + gcIdList = cart.getGiftCertIdList(); + Transaction.wrap(function () { + for (i = 0; i < gcIdList.length; i += 1) { + cart.removeGiftCertificatePaymentInstrument(gcIdList[i]); + } + gcID = null; + for (j = 0; j < gcIdList.length; j += 1) { + gcID = gcIdList[j]; + gc = GiftCertificateMgr.getGiftCertificateByCode(gcID); + if (gc && + // make sure exists + gc.isEnabled() && + // make sure it is enabled + gc.getStatus() !== GiftCertificate.STATUS_PENDING && + // make sure it is available for use + gc.getStatus() !== GiftCertificate.STATUS_REDEEMED && + // make sure it has not been fully redeemed + gc.balance.currencyCode === cart.getCurrencyCode()) { + // make sure the GC is in the right currency + cart.createGiftCertificatePaymentInstrument(gc); + } + } + }); + } +} + +/** + * Used to adjust gift certificate totals, update page metadata, and render the billing page. + * This function is called whenever a billing form action is handled. + * @see {@link module:controllers/COBilling~returnToForm|returnToForm} + * @see {@link module:controllers/COBilling~adjustGiftCertificates|adjustGiftCertificates} + * @see {@link module:controllers/COBilling~billing|billing} + */ +function handleCoupon() { + var CouponError; + // @FIXME what is that used for? + if (empty(CouponError)) { + /* + * Adjust gift certificate redemptions as after applying coupon(s), + * order total is changed. AdjustGiftCertificate pipeline removes and + * then adds currently added gift certificates to reflect order total + * changes. + */ + adjustGiftCertificates(); + } + returnToForm(app.getModel('Cart').get()); +} + +/** + * Redeems a gift certificate. If the gift certificate was not successfully + * redeemed, the form field is invalidated with the appropriate error message. + * If the gift certificate was redeemed, the form gets cleared. This function + * is called by an Ajax request and generates a JSON response. + * @param {String} giftCertCode - Gift certificate code entered into the giftCertCode field in the billing form. + * @returns {object} JSON object containing the status of the gift certificate. + */ +function redeemGiftCertificate(giftCertCode) { + var cart, gc, newGCPaymentInstrument, gcPaymentInstrument, status, result; + cart = app.getModel('Cart').get(); + if (cart) { + // fetch the gift certificate + gc = GiftCertificateMgr.getGiftCertificateByCode(giftCertCode); + if (!gc) { + // make sure exists + result = new Status(Status.ERROR, GiftCertificateStatusCodes.GIFTCERTIFICATE_NOT_FOUND); + } else if (!gc.isEnabled()) { + // make sure it is enabled + result = new Status(Status.ERROR, GiftCertificateStatusCodes.GIFTCERTIFICATE_DISABLED); + } else if (gc.getStatus() === GiftCertificate.STATUS_PENDING) { + // make sure it is available for use + result = new Status(Status.ERROR, GiftCertificateStatusCodes.GIFTCERTIFICATE_PENDING); + } else if (gc.getStatus() === GiftCertificate.STATUS_REDEEMED) { + // make sure it has not been fully redeemed + result = new Status(Status.ERROR, GiftCertificateStatusCodes.GIFTCERTIFICATE_INSUFFICIENT_BALANCE); + } else if (gc.balance.currencyCode !== cart.getCurrencyCode()) { + // make sure the GC is in the right currency + result = new Status(Status.ERROR, GiftCertificateStatusCodes.GIFTCERTIFICATE_CURRENCY_MISMATCH); + } else { + newGCPaymentInstrument = Transaction.wrap(function () { + gcPaymentInstrument = cart.createGiftCertificatePaymentInstrument(gc); + cart.calculate(); + return gcPaymentInstrument; + }); + status = new Status(Status.OK); + status.addDetail('NewGCPaymentInstrument', newGCPaymentInstrument); + result = status; + } + } else { + result = new Status(Status.ERROR, 'BASKET_NOT_FOUND'); + } + return result; +} + +/** + * Updates credit card information from the httpParameterMap and determines if there is a currently selected credit card. + * If a credit card is selected, it adds the the credit card number to the billing form. Otherwise, the {@link module:controllers/COBilling~publicStart|publicStart} method is called. + * In either case, it will initialize the credit card list in the billing form and call the {@link module:controllers/COBilling~start|start} function. + */ +function updateCreditCardSelection() { + var cart, applicableCreditCards, UUID, selectedCreditCard, instrumentsIter, creditCardInstrument; + cart = app.getModel('Cart').get(); + applicableCreditCards = initCreditCardList(cart).ApplicableCreditCards; + UUID = request.httpParameterMap.creditCardUUID.value || request.httpParameterMap.dwfrm_billing_paymentMethods_creditCardList.stringValue; + selectedCreditCard = null; + if (UUID && applicableCreditCards && !applicableCreditCards.empty) { + // find credit card in payment instruments + instrumentsIter = applicableCreditCards.iterator(); + while (instrumentsIter.hasNext()) { + creditCardInstrument = instrumentsIter.next(); + if (UUID.equals(creditCardInstrument.UUID)) { + selectedCreditCard = creditCardInstrument; + } + } + if (selectedCreditCard) { + app.getForm('billing').object.paymentMethods.creditCard.number.value = selectedCreditCard.creditCardNumber; + } else { + publicStart(); + } + } else { + publicStart(); + } + app.getForm('billing.paymentMethods.creditCard').copyFrom(selectedCreditCard); + initCreditCardList(cart); + start(cart); +} + +/** + * Clears the form element for the currently selected payment method and removes the other payment methods. + * + * @return {Boolean} Returns true if payment is successfully reset. Returns false if the currently selected payment + * method is bml and the ssn cannot be validated. + */ +function resetPaymentForms() { + var cart = app.getModel('Cart').get(); + var status = Transaction.wrap(function () { + if (app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value.equals('PayPal')) { + app.getForm('billing').object.paymentMethods.creditCard.clearFormElement(); + app.getForm('billing').object.paymentMethods.bml.clearFormElement(); + cart.removePaymentInstruments(cart.getPaymentInstruments(PaymentInstrument.METHOD_CREDIT_CARD)); + cart.removePaymentInstruments(cart.getPaymentInstruments(PaymentInstrument.METHOD_BML)); + } else if (app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value.equals(PaymentInstrument.METHOD_CREDIT_CARD)) { + app.getForm('billing').object.paymentMethods.bml.clearFormElement(); + cart.removePaymentInstruments(cart.getPaymentInstruments(PaymentInstrument.METHOD_BML)); + cart.removePaymentInstruments(cart.getPaymentInstruments('PayPal')); + } else if (app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value.equals(PaymentInstrument.METHOD_BML)) { + app.getForm('billing').object.paymentMethods.creditCard.clearFormElement(); + if (!app.getForm('billing').object.paymentMethods.bml.ssn.valid) { + return false; + } + cart.removePaymentInstruments(cart.getPaymentInstruments(PaymentInstrument.METHOD_CREDIT_CARD)); + cart.removePaymentInstruments(cart.getPaymentInstruments('PayPal')); + } + return true; + }); + return status; +} + +/** + * Validates the billing form. + * @returns {boolean} Returns true if the billing address is valid or no payment is needed. Returns false if the billing form is invalid. + */ +function validateBilling() { + if (!app.getForm('billing').object.billingAddress.valid) { + return false; + } + if (!empty(request.httpParameterMap.noPaymentNeeded.value)) { + return true; + } + if (!empty(app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value) && app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value.equals(PaymentInstrument.METHOD_CREDIT_CARD)) { + if (!app.getForm('billing').object.valid) { + return false; + } + } + return true; +} + +/** + * Handles the selection of the payment method and performs payment method-specific + * validation and verification on the entered form fields. If the + * order total is 0 (if the user has product promotions) then we do not + * need a valid payment method. + */ +function handlePaymentSelection(cart) { + var result; + if (empty(app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value)) { + if (cart.getTotalGrossPrice() > 0) { + result = { + error: true + }; + } else { + result = { + ok: true + }; + } + } + + // skip the payment handling if the whole payment was made using gift cert + if (app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value.equals(PaymentInstrument.METHOD_GIFT_CERTIFICATE)) { + result = { + ok: true + }; + } + if (empty(PaymentMgr.getPaymentMethod(app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value).paymentProcessor)) { + result = { + error: true, + MissingPaymentProcessor: true + }; + } + if (!result) { + result = app.getModel('PaymentProcessor').handle(cart.object, app.getForm('billing').object.paymentMethods.selectedPaymentMethodID.value); + } + return result; +} + +/** + * Gets or creates a billing address and copies it to the billingaddress form. Also sets the customer email address + * to the value in the billingAddress form. + * @transaction + * @param {module:models/CartModel~CartModel} cart - A CartModel wrapping the current Basket. + * @returns {boolean} true + */ +function handleBillingAddress(cart) { + var billingAddress = cart.getBillingAddress(); + Transaction.wrap(function () { + if (!billingAddress) { + billingAddress = cart.createBillingAddress(); + } + app.getForm('billing.billingAddress.addressFields').copyTo(billingAddress); + app.getForm('billing.billingAddress.addressFields.states').copyTo(billingAddress); + cart.setCustomerEmail(app.getForm('billing').object.billingAddress.email.emailAddress.value); + }); + return true; +} + +/** + * Checks if there is currently a cart and if one exists, gets the customer address from the httpParameterMap and saves it to the customer address book. + * Initializes the list of credit cards and calls the {@link module:controllers/COBilling~start|start} function. + * If a cart does not already exist, calls the {@link module:controllers/Cart~Show|Cart controller Show function}. + */ +function updateAddressDetails() { + var cart, address, billingAddress; + cart = app.getModel('Cart').get(); + if (cart) { + address = customer.getAddressBook().getAddress(empty(request.httpParameterMap.addressID.value) ? request.httpParameterMap.dwfrm_billing_addressList.value : request.httpParameterMap.addressID.value); + app.getForm('billing.billingAddress.addressFields').copyFrom(address); + app.getForm('billing.billingAddress.addressFields.states').copyFrom(address); + billingAddress = cart.getBillingAddress(); + app.getForm('billing.billingAddress.addressFields').copyTo(billingAddress); + initCreditCardList(cart); + start(cart); + } else { + //@FIXME redirect + app.getController('Cart').Show(); + } +} + +/** + * Form handler for the billing form. Handles the following actions: + * - __applyCoupon__ - gets the coupon to add from the httpParameterMap couponCode property and calls {@link module:controllers/COBilling~handleCoupon|handleCoupon} + * - __creditCardSelect__ - calls the {@link module:controllers/COBilling~updateCreditCardSelection|updateCreditCardSelection} function. + * - __paymentSelect__ - calls the {@link module:controllers/COBilling~publicStart|publicStart} function. + * - __redeemGiftCert__ - redeems the gift certificate entered into the billing form and returns to the cart. + * - __save__ - validates payment and address information and handles any errors. If the billing form is valid, + * saves the billing address to the customer profile, sets a flag to indicate the billing step is successful, and calls + * the {@link module:controllers/COSummary~start|COSummary controller Start function}. + * - __selectAddress__ - calls the {@link module:controllers/COBilling~updateAddressDetails|updateAddressDetails} function. + */ +// ### Custom Adyen cartridge start ### +function billing(data) { + // restore cart and redirect to billing stage if successful + if (session.privacy.currentOrderNumber && session.privacy.currentOrderToken) { + var order = OrderMgr.getOrder(session.privacy.currentOrderNumber, session.privacy.currentOrderToken); + + // Clear cache so the order restore will only be attmpted once per order + session.privacy.currentOrderNumber = null; + session.privacy.currentOrderToken = null; + Transaction.wrap(function () { + OrderMgr.failOrder(order, true); + }); + publicStart(); + return; + } + if (!validateBilling()) { + var responseUtils = require('~/cartridge/scripts/util/Response'); + responseUtils.renderJSON({ + fieldErrors: true + }); + } + var paymentInformation = app.getForm('adyPaydata'); + if (paymentInformation.get("paymentFromComponentStateData").value()) { + AdyenController.ShowConfirmationPaymentFromComponent(); + return; + } + app.getForm('billing').handleAction({ + applyCoupon: function () { + var couponCode = request.httpParameterMap.couponCode.stringValue || request.httpParameterMap.dwfrm_billing_couponCode.stringValue; + + // TODO what happened to this start node? + app.getController('Cart').AddCoupon(couponCode); + handleCoupon(); + return; + }, + creditCardSelect: function () { + updateCreditCardSelection(); + return; + }, + paymentSelect: function () { + // ToDo - pass parameter ? + publicStart(); + return; + }, + redeemGiftCert: function () { + var status = redeemGiftCertificate(app.getForm('billing').object.giftCertCode.htmlValue); + if (!status.isError()) { + returnToForm(app.getModel('Cart').get(), { + NewGCPaymentInstrument: status.getDetail('NewGCPaymentInstrument') + }); + } else { + returnToForm(app.getModel('Cart').get()); + } + return; + }, + save: function () { + Transaction.wrap(function () { + var cart = app.getModel('Cart').get(); + if (!resetPaymentForms() || !validateBilling() || !handleBillingAddress(cart) || + // Performs validation steps, based upon the entered billing address + // and address options. + handlePaymentSelection(cart).error) { + // Performs payment method specific checks, such as credit card verification. + returnToForm(cart); + } else { + if (customer.authenticated && app.getForm('billing').object.billingAddress.addToAddressBook.value) { + app.getModel('Profile').get(customer.profile).addAddressToAddressBook(cart.getBillingAddress()); + } + // Mark step as fulfilled + app.getForm('billing').object.fulfilled.value = true; + if (!paymentInformation.get("paymentFromComponentStateData").value()) { + // A successful billing page will jump to the next checkout step. + app.getController('COSummary').Start(); + } + return; + } + }); + }, + selectAddress: function () { + updateAddressDetails(); + return; + } + }); +} +// ### Custom Adyen cartridge end ### + +/** +* Gets the gift certificate code from the httpParameterMap and redeems it. For an ajax call, renders an empty JSON object. +* Otherwise, renders a JSON object with information about the gift certificate code and the success and status of the redemption. +*/ +function redeemGiftCertificateJson() { + var giftCertCode, giftCertStatus; + giftCertCode = request.httpParameterMap.giftCertCode.stringValue; + giftCertStatus = redeemGiftCertificate(giftCertCode); + let responseUtils = require('~/cartridge/scripts/util/Response'); + if (request.httpParameterMap.format.stringValue !== 'ajax') { + // @FIXME we could also build an ajax guard? + responseUtils.renderJSON({}); + } else { + responseUtils.renderJSON({ + status: giftCertStatus.code, + success: !giftCertStatus.error, + message: Resource.msgf('billing.' + giftCertStatus.code, 'checkout', null, giftCertCode), + code: giftCertCode + }); + } +} + +/** + * Removes gift certificate from the basket payment instruments and + * generates a JSON response with a status. This function is called by an Ajax + * request. + */ +function removeGiftCertificate() { + if (!empty(request.httpParameterMap.giftCertificateID.stringValue)) { + var cart = app.getModel('Cart').get(); + Transaction.wrap(function () { + cart.removeGiftCertificatePaymentInstrument(request.httpParameterMap.giftCertificateID.stringValue); + cart.calculate(); + }); + } + publicStart(); +} + +/** + * Updates the order totals and recalculates the basket after a coupon code is applied. + * Renders the checkout/minisummary template, which includes the mini cart order totals and shipment summary. + */ +function updateSummary() { + var cart = app.getModel('Cart').get(); + Transaction.wrap(function () { + cart.calculate(); + }); + app.getView({ + checkoutstep: 4, + Basket: cart.object + }).render('checkout/minisummary'); +} + +/** + * Renders a form dialog to edit an address. The dialog is supposed to be opened + * by an Ajax request and ends in templates, which trigger a certain JavaScript + * event. The calling page of this dialog is responsible for handling these + * events. + */ +function editAddress() { + app.getForm('billing').objectaddress.clearFormElement(); + var address = customer.getAddressBook().getAddress(request.httpParameterMap.addressID.stringValue); + if (address) { + app.getForm('billinaddress').copyFrom(address); + app.getForm('billingaggdress.states').copyFrom(address); + } + app.getView({ + ContinueURL: URLUtils.https('COBilling-EditBillingAddress') + }).render('checkout/billing/billingaddressdetails'); +} + +/** + * Form handler for the returnToForm form. + * - __apply __ - attempts to save billing address information to the platform. If there is an error, renders the + * components/dialog/dialogapply template. If it is successful, sets the ContinueURL to {@link module:controllers/COBilling~EditBillingAddress|EditBillingAddress} and renders the + * checkout/billing/billingaddressdetails template. + * - __remove __ - Checks if the customer owns any product lists. If they do not, removes the address from the customer address book + * and renders the components/dialog/dialogdelete template. + * If they do own product lists, sets the ContinueURL to {@link module:controllers/COBilling~EditBillingAddress|EditBillingAddress} and renders the checkout/billing/billingaddressdetails template. + */ +function editBillingAddress() { + app.getForm('returnToForm').handleAction({ + apply: function () { + if (!app.getForm('billingaddress').copyTo(app.getForm('billingaddress').object)) { + app.getView({ + ContinueURL: URLUtils.https('COBilling-EditBillingAddress') + }).render('checkout/billing/billingaddressdetails'); + } else { + app.getView().render('components/dialog/dialogapply'); + } + }, + remove: function () { + if (ProductListMgr.getProductLists(app.getForm('billing').objectaddress.object).isEmpty()) { + customer.getAddressBook().removeAddress(app.getForm('billing').objectaddress.object); + app.getView().render('components/dialog/dialogdelete'); + } else { + app.getView({ + ContinueURL: URLUtils.https('COBilling-EditBillingAddress') + }).render('checkout/billing/billingaddressdetails'); + } + } + }); +} + +/** + * Returns information of a gift certificate including its balance as JSON + * response. Required to check the remaining balance. + */ +function getGiftCertificateBalance() { + var giftCertificate = GiftCertificateMgr.getGiftCertificateByCode(request.httpParameterMap.giftCertificateID.value); + var responseUtils = require('~/cartridge/scripts/util/Response'); + if (giftCertificate && giftCertificate.isEnabled()) { + responseUtils.renderJSON({ + giftCertificate: { + ID: giftCertificate.getGiftCertificateCode(), + balance: StringUtils.formatMoney(giftCertificate.getBalance()) + } + }); + } else { + responseUtils.renderJSON({ + error: Resource.msg('billing.giftcertinvalid', 'checkout', null) + }); + } +} + +/** + * Selects a customer credit card and returns the details of the credit card as + * JSON response. Required to fill credit card form with details of selected + * credit card. + */ +function selectCreditCard() { + var cart, applicableCreditCards, selectedCreditCard, instrumentsIter, creditCardInstrument; + cart = app.getModel('Cart').get(); + applicableCreditCards = initCreditCardList(cart).ApplicableCreditCards; + selectedCreditCard = null; + + // ensure mandatory parameter 'CreditCardUUID' and 'CustomerPaymentInstruments' + // in pipeline dictionary and collection is not empty + if (request.httpParameterMap.creditCardUUID.value && applicableCreditCards && !applicableCreditCards.empty) { + // find credit card in payment instruments + instrumentsIter = applicableCreditCards.iterator(); + while (instrumentsIter.hasNext()) { + creditCardInstrument = instrumentsIter.next(); + if (request.httpParameterMap.creditCardUUID.value.equals(creditCardInstrument.UUID)) { + selectedCreditCard = creditCardInstrument; + } + } + if (selectedCreditCard) { + app.getForm('billing').object.paymentMethods.creditCard.number.value = selectedCreditCard.getCreditCardNumber(); + } + } + app.getView({ + SelectedCreditCard: selectedCreditCard + }).render('checkout/billing/creditcardjson'); +} + +/** + * Revalidates existing payment instruments in later checkout steps. + * + * @param {module:models/CartModel~CartModel} cart - A CartModel wrapping the current Basket. + * @return {Boolean} true if existing payment instruments are valid, false if not. + */ +// ### Custom Adyen cartridge start ### +function validatePayment(cart) { + var paymentAmount, countryCode, invalidPaymentInstruments, result; + if (cart.getPaymentInstrument() && [constants.METHOD_ADYEN_POS, constants.METHOD_ADYEN_COMPONENT].indexOf(cart.getPaymentInstrument().getPaymentMethod()) !== -1) { + result = true; + return result; + } + if (app.getForm('billing').object.fulfilled.value) { + paymentAmount = cart.getNonGiftCertificateAmount(); + countryCode = Countries.getCurrent({ + CurrentRequest: { + locale: request.locale + } + }).countryCode; + invalidPaymentInstruments = cart.validatePaymentInstruments(customer, countryCode, paymentAmount.value).InvalidPaymentInstruments; + if (!invalidPaymentInstruments && cart.calculatePaymentTransactionTotal()) { + result = true; + } else { + app.getForm('billing').object.fulfilled.value = false; + result = false; + } + } else { + result = false; + } + return result; +} +// ### Custom Adyen cartridge end ### + +/** + * Attempts to save the used credit card in the customer payment instruments. + * The logic replaces an old saved credit card with the same masked credit card + * number of the same card type with the new credit card. This ensures creating + * only unique cards as well as replacing expired cards. + * @transactional + * @return {Boolean} true if credit card is successfully saved. + */ +// ### Custom Adyen cartridge start ### +function saveCreditCard() { + if (AdyenConfigs.getAdyenRecurringPaymentsEnabled()) { + //saved credit cards are handling in COPlaceOrder and Login for Adyen - saved cards are synced with Adyen ListRecurringDetails API call + return true; + } else { + var i, creditCards, newCreditCard; + if (customer.authenticated && app.getForm('billing').object.paymentMethods.creditCard.saveCard.value) { + creditCards = customer.getProfile().getWallet().getPaymentInstruments(PaymentInstrument.METHOD_CREDIT_CARD); + Transaction.wrap(function () { + newCreditCard = customer.getProfile().getWallet().createPaymentInstrument(PaymentInstrument.METHOD_CREDIT_CARD); + + // copy the credit card details to the payment instrument + newCreditCard.setCreditCardHolder(app.getForm('billing').object.paymentMethods.creditCard.owner.value); + newCreditCard.setCreditCardNumber(app.getForm('billing').object.paymentMethods.creditCard.number.value); + newCreditCard.setCreditCardExpirationMonth(app.getForm('billing').object.paymentMethods.creditCard.expiration.month.value); + newCreditCard.setCreditCardExpirationYear(app.getForm('billing').object.paymentMethods.creditCard.expiration.year.value); + newCreditCard.setCreditCardType(app.getForm('billing').object.paymentMethods.creditCard.type.value); + for (i = 0; i < creditCards.length; i++) { + var creditcard = creditCards[i]; + if (creditcard.maskedCreditCardNumber === newCreditCard.maskedCreditCardNumber && creditcard.creditCardType === newCreditCard.creditCardType) { + customer.getProfile().getWallet().removePaymentInstrument(creditcard); + } + } + }); + } + return true; + } +} +// ### Custom Adyen cartridge end ### + +/* +* Module exports +*/ + +/* +* Web exposed methods +*/ +/** Starting point for billing. + * @see module:controllers/COBilling~publicStart */ +exports.Start = guard.ensure(['https'], publicStart); + +/** Redeems gift certificates. + * @see module:controllers/COBilling~redeemGiftCertificateJson */ +exports.RedeemGiftCertificateJson = guard.ensure(['https', 'get'], redeemGiftCertificateJson); +/** Removes gift certificate from the basket payment instruments. + * @see module:controllers/COBilling~removeGiftCertificate */ +exports.RemoveGiftCertificate = guard.ensure(['https', 'get'], removeGiftCertificate); +/** Updates the order totals and recalculates the basket after a coupon code is applied. + * @see module:controllers/COBilling~updateSummary */ +exports.UpdateSummary = guard.ensure(['https', 'get'], updateSummary); +/** Gets the customer address and saves it to the customer address book. + * @see module:controllers/COBilling~updateAddressDetails */ +exports.UpdateAddressDetails = guard.ensure(['https', 'get'], updateAddressDetails); +/** Renders a form dialog to edit an address. + * @see module:controllers/COBilling~editAddress */ +exports.EditAddress = guard.ensure(['https', 'get', 'csrf'], editAddress); +/** Returns information of a gift certificate including its balance as JSON response. + * @see module:controllers/COBilling~getGiftCertificateBalance */ +exports.GetGiftCertificateBalance = guard.ensure(['https', 'get'], getGiftCertificateBalance); +/** Selects a customer credit card and returns the details of the credit card as JSON response. + * @see module:controllers/COBilling~selectCreditCard */ +exports.SelectCreditCard = guard.ensure(['https', 'get'], selectCreditCard); +/** Adds the currently selected credit card to the billing form and initializes the credit card selection list. + * @see module:controllers/COBilling~updateCreditCardSelection */ +exports.UpdateCreditCardSelection = guard.ensure(['https', 'get'], updateCreditCardSelection); +/** Form handler for the billing form. + * @see module:controllers/COBilling~billing */ +exports.Billing = guard.ensure(['https', 'csrf'], billing); +/** Form handler for the returnToForm form. + * @see module:controllers/COBilling~editBillingAddress */ +exports.EditBillingAddress = guard.ensure(['https', 'post'], editBillingAddress); +/* + * Local methods + */ +/** Saves the credit card used in the billing form in the customer payment instruments. + * @see module:controllers/COBilling~saveCreditCard */ +exports.SaveCreditCard = saveCreditCard; +/** Revalidates existing payment instruments in later checkout steps. + * @see module:controllers/COBilling~validatePayment */ +exports.ValidatePayment = validatePayment; +/** Handles the selection of the payment method and performs payment method specific validation and verification upon the entered form fields. + * @see module:controllers/COBilling~handlePaymentSelection */ +exports.HandlePaymentSelection = handlePaymentSelection; \ No newline at end of file diff --git a/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COPlaceOrder.js b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COPlaceOrder.js new file mode 100644 index 000000000..2be72cdfb --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COPlaceOrder.js @@ -0,0 +1,261 @@ +'use strict'; + +/** + * Controller that creates an order from the current basket. It's a pure processing controller and does + * no page rendering. The controller is used by checkout and is called upon the triggered place order action. + * It contains the actual logic to authorize the payment and create the order. The controller communicates the result + * of the order creation process and uses a status object PlaceOrderError to set proper error states. + * The calling controller is must handle the results of the order creation and evaluate any errors returned by it. + * + * @module controllers/COPlaceOrder + */ + +/* API Includes */ +var OrderMgr = require('dw/order/OrderMgr'); +var PaymentMgr = require('dw/order/PaymentMgr'); +var Status = require('dw/system/Status'); +var Transaction = require('dw/system/Transaction'); + +/* Script Modules */ +var app = require('~/cartridge/scripts/app'); +var guard = require('~/cartridge/scripts/guard'); +var Cart = app.getModel('Cart'); +var Order = app.getModel('Order'); +var PaymentProcessor = app.getModel('PaymentProcessor'); + +/** + * Responsible for payment handling. This function uses PaymentProcessorModel methods to + * handle payment processing specific to each payment instrument. It returns an + * error if any of the authorizations failed or a payment + * instrument is of an unknown payment method. If a payment method has no + * payment processor assigned, the payment is accepted as authorized. + * + * @transactional + * @param {dw.order.Order} order - the order to handle payments for. + * @return {Object} JSON object containing information about missing payments, errors, or an empty object if the function is successful. + */ +// ### Custom Adyen cartridge start ### +function handlePayments(order) { + if (order.getTotalNetPrice().value !== 0.00) { + var paymentInstruments = order.getPaymentInstruments(); + if (paymentInstruments.length === 0) { + return { + missingPaymentInfo: true + }; + } + /** + * Sets the transaction ID for the payment instrument. + */ + var handlePaymentTransaction = function () { + paymentInstrument.getPaymentTransaction().setTransactionID(order.getOrderNo()); + }; + for (var i = 0; i < paymentInstruments.length; i++) { + var paymentInstrument = paymentInstruments[i]; + if (PaymentMgr.getPaymentMethod(paymentInstrument.getPaymentMethod()).getPaymentProcessor() === null) { + Transaction.wrap(handlePaymentTransaction); + } else { + var authorizationResult = PaymentProcessor.authorize(order, paymentInstrument); + if (authorizationResult.not_supported || authorizationResult.error) { + return { + error: true + }; + } + if (authorizationResult.isAdyen) { + return authorizationResult; + } + } + } + } + return {}; +} +// ### Custom Adyen cartridge end ### + +/** + * The entry point for order creation. This function is not exported, as this controller must only + * be called by another controller. + * + * @transactional + * @return {Object} JSON object that is empty, contains error information, or PlaceOrderError status information. + */ +// ### Custom Adyen cartridge start ### +function start() { + var cart = Cart.get(); + if (!cart) { + app.getController('Cart').Show(); + return {}; + } + var COShipping = app.getController('COShipping'); + + // Clean shipments. + COShipping.PrepareShipments(cart); + + // Make sure there is a valid shipping address, accounting for gift certificates that do not have one. + if (cart.getProductLineItems().size() > 0 && cart.getDefaultShipment().getShippingAddress() === null) { + COShipping.Start(); + return {}; + } + + // Make sure the billing step is fulfilled, otherwise restart checkout. + if (!session.forms.billing.fulfilled.value) { + app.getController('COCustomer').Start(); + return {}; + } + Transaction.wrap(function () { + cart.calculate(); + }); + var COBilling = app.getController('COBilling'); + Transaction.wrap(function () { + if (!COBilling.ValidatePayment(cart)) { + COBilling.Start(); + return {}; + } + }); + + // Recalculate the payments. If there is only gift certificates, make sure it covers the order total, if not + // back to billing page. + Transaction.wrap(function () { + if (!cart.calculatePaymentTransactionTotal()) { + COBilling.Start(); + return {}; + } + }); + + // Handle used addresses and credit cards. + var saveCCResult = COBilling.SaveCreditCard(); + if (!saveCCResult) { + return { + error: true, + PlaceOrderError: new Status(Status.ERROR, 'confirm.error.technical') + }; + } + + // Creates a new order. This will internally ReserveInventoryForOrder and will create a new Order with status + // 'Created'. + var order = cart.createOrder(); + if (!order) { + // TODO - need to pass BasketStatus to Cart-Show ? + app.getController('Cart').Show(); + return {}; + } + var handlePaymentsResult = handlePayments(order); + var constants = require('*/cartridge/adyenConstants/constants'); + var URLUtils = require('dw/web/URLUtils'); + + // Cache current order number in order to potentially restore cart. + session.privacy.currentOrderNumber = order.orderNo; + session.privacy.currentOrderToken = order.orderToken; + var submitOrder = handlePaymentsResult.isAdyen === false || + //adyen is not the payment processor for this payment + handlePaymentsResult.isAdyen && !handlePaymentsResult.action || + // isAdyen and no action + handlePaymentsResult.action && handlePaymentsResult.action.type === constants.ACTIONTYPES.VOUCHER || + // action type is voucher + !handlePaymentsResult.action && !handlePaymentsResult.isFinal; // no action and payment is not final (SEPA) + if (handlePaymentsResult.error) { + return Transaction.wrap(function () { + OrderMgr.failOrder(order); + return { + continueUrl: URLUtils.url('Adyen-ShowConfirmation', 'error', 'true', 'errorStatus', 'confirm.error.technical').toString() + }; + }); + } else if (handlePaymentsResult.missingPaymentInfo) { + return Transaction.wrap(function () { + OrderMgr.failOrder(order); + return { + continueUrl: URLUtils.url('Adyen-ShowConfirmation', 'error', 'true', 'errorStatus', 'confirm.error.technical').toString() + }; + }); + } else { + if (submitOrder) { + var orderPlacementStatus = Order.submit(order); + if (!orderPlacementStatus.error) { + clearForms(); + } + if (handlePaymentsResult.isAdyen) { + return { + continueUrl: URLUtils.url('Adyen-ShowConfirmation', 'authorized', 'true', 'merchantReference', order.orderNo, 'orderToken', order.orderToken).toString() + }; + } + return orderPlacementStatus; + } + } + return handlePaymentsResult; +} +// ### Custom Adyen cartridge end ### + +function clearForms() { + // Clears all forms used in the checkout process. + session.forms.singleshipping.clearFormElement(); + session.forms.multishipping.clearFormElement(); + session.forms.billing.clearFormElement(); + + // clear cached order number + session.privacy.currentOrderNumber = null; + session.privacy.currentOrderToken = null; +} + +/** + * Asynchronous Callbacks for OCAPI. These functions result in a JSON response. + * Sets the payment instrument information in the form from values in the httpParameterMap. + * Checks that the payment instrument selected is valid and authorizes the payment. Renders error + * message information if the payment is not authorized. + */ +function submitPaymentJSON() { + var order = Order.get(request.httpParameterMap.order_id.stringValue); + if (!order.object || request.httpParameterMap.order_token.stringValue !== order.getOrderToken()) { + app.getView().render('checkout/components/faults'); + return; + } + session.forms.billing.paymentMethods.clearFormElement(); + var requestObject = JSON.parse(request.httpParameterMap.requestBodyAsString); + var form = session.forms.billing.paymentMethods; + for (var requestObjectItem in requestObject) { + var asyncPaymentMethodResponse = requestObject[requestObjectItem]; + var terms = requestObjectItem.split('_'); + if (terms[0] === 'creditCard') { + var value = terms[1] === 'month' || terms[1] === 'year' ? Number(asyncPaymentMethodResponse) : asyncPaymentMethodResponse; + form.creditCard[terms[1]].setValue(value); + } else if (terms[0] === 'selectedPaymentMethodID') { + form.selectedPaymentMethodID.setValue(asyncPaymentMethodResponse); + } + } + if (app.getController('COBilling').HandlePaymentSelection('cart').error || handlePayments().error) { + app.getView().render('checkout/components/faults'); + return; + } + app.getView().render('checkout/components/payment_methods_success'); +} + +/* + * Asynchronous Callbacks for SiteGenesis. + * Identifies if an order exists, submits the order, and shows a confirmation message. + */ +function submit() { + var order = Order.get(request.httpParameterMap.order_id.stringValue); + var orderPlacementStatus; + if (order.object && request.httpParameterMap.order_token.stringValue === order.getOrderToken()) { + orderPlacementStatus = Order.submit(order.object); + if (!orderPlacementStatus.error) { + clearForms(); + return app.getController('COSummary').ShowConfirmation(order.object); + } + } + app.getController('COSummary').Start(); +} + +/* + * Module exports + */ + +/* + * Web exposed methods + */ +/** @see module:controllers/COPlaceOrder~submitPaymentJSON */ +exports.SubmitPaymentJSON = guard.ensure(['https'], submitPaymentJSON); +/** @see module:controllers/COPlaceOrder~submitPaymentJSON */ +exports.Submit = guard.ensure(['https'], submit); + +/* + * Local methods + */ +exports.Start = start; \ No newline at end of file diff --git a/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COSummary.js b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COSummary.js new file mode 100644 index 000000000..ed2d8a095 --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/COSummary.js @@ -0,0 +1,130 @@ +'use strict'; + +/** + * This controller implements the last step of the checkout. A successful handling + * of billing address and payment method selection leads to this controller. It + * provides the customer with a last overview of the basket prior to confirm the + * final order creation. + * + * @module controllers/COSummary + */ + +/* API Includes */ +var Resource = require('dw/web/Resource'); +var Transaction = require('dw/system/Transaction'); +var URLUtils = require('dw/web/URLUtils'); +/* Script Modules */ +var app = require('~/cartridge/scripts/app'); +var guard = require('~/cartridge/scripts/guard'); +var Cart = app.getModel('Cart'); +// ### Custom Adyen cartridge start ### +var AdyenController = require("int_adyen_controllers/cartridge/controllers/Adyen"); +// ### Custom Adyen cartridge end ### + +/** + * Renders the summary page prior to order creation. + * @param {Object} context context object used for the view + */ +function start(context) { + var cart = Cart.get(); + + // Checks whether all payment methods are still applicable. Recalculates all existing non-gift certificate payment + // instrument totals according to redeemed gift certificates or additional discounts granted through coupon + // redemptions on this page. + var COBilling = app.getController('COBilling'); + if (!COBilling.ValidatePayment(cart)) { + COBilling.Start(); + return; + } else { + Transaction.wrap(function () { + cart.calculate(); + }); + Transaction.wrap(function () { + if (!cart.calculatePaymentTransactionTotal()) { + COBilling.Start(); + } + }); + var pageMeta = require('~/cartridge/scripts/meta'); + var viewContext = require('app_storefront_core/cartridge/scripts/common/extend').immutable(context, { + Basket: cart.object + }); + pageMeta.update({ + pageTitle: Resource.msg('summary.meta.pagetitle', 'checkout', 'SiteGenesis Checkout') + }); + app.getView(viewContext).render('checkout/summary/summary'); + } +} + +/** + * This function is called when the "Place Order" action is triggered by the + * customer. + */ +// ### Custom Adyen cartridge start ### +function submit() { + // Calls the COPlaceOrder controller that does the place order action and any payment authorization. + // If the order creation failed, it returns a JSON object with an error key and a boolean value. + var placeOrderResult = app.getController('COPlaceOrder').Start(); + if (Object.keys(placeOrderResult).length === 0 || placeOrderResult.error) { + start({ + PlaceOrderError: placeOrderResult.PlaceOrderError + }); + } else { + if (placeOrderResult.isAdyen || placeOrderResult.continueUrl) { + const responseUtils = require('*/cartridge/scripts/util/Response'); + responseUtils.renderJSON(placeOrderResult); + } else { + showConfirmation(placeOrderResult.Order); + } + } +} +// ### Custom Adyen cartridge end ## + +/** + * Renders the order confirmation page after successful order + * creation. If a nonregistered customer has checked out, the confirmation page + * provides a "Create Account" form. This function handles the + * account creation. + */ +// ### Custom Adyen cartridge start ### +function showConfirmation(order) { + var AdyenHelper = require('*/cartridge/scripts/util/adyenHelper'); + var adyenGivingConfig = AdyenHelper.getAdyenGivingConfig(order); + if (!customer.authenticated) { + // Initializes the account creation form for guest checkouts by populating the first and last name with the + // used billing address. + var customerForm = app.getForm('profile.customer'); + customerForm.setValue('firstname', order.billingAddress.firstName); + customerForm.setValue('lastname', order.billingAddress.lastName); + customerForm.setValue('email', order.customerEmail); + customerForm.setValue('orderNo', order.orderNo); + } + app.getForm('profile.login.passwordconfirm').clear(); + app.getForm('profile.login.password').clear(); + var pageMeta = require('~/cartridge/scripts/meta'); + pageMeta.update({ + pageTitle: Resource.msg('confirmation.meta.pagetitle', 'checkout', 'SiteGenesis Checkout Confirmation') + }); + app.getView({ + Order: order, + AdyenGivingConfig: adyenGivingConfig, + ContinueURL: URLUtils.https('Account-RegistrationForm') // needed by registration form after anonymous checkouts + }).render('checkout/confirmation/confirmation'); +} +// ### Custom Adyen cartridge end ### + +/* + * Module exports + */ + +/* + * Web exposed methods + */ +/** @see module:controllers/COSummary~Start */ +exports.Start = guard.ensure(['https'], start); +/** @see module:controllers/COSummary~Submit */ +exports.Submit = guard.ensure(['https', 'post', 'csrf'], submit); + +/* + * Local method + */ +exports.ShowConfirmation = showConfirmation; \ No newline at end of file diff --git a/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/PaymentInstruments.js b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/PaymentInstruments.js new file mode 100644 index 000000000..6d0bc7560 --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/cartridge/controllers/PaymentInstruments.js @@ -0,0 +1,307 @@ +'use strict'; + +/** + * Controller that displays credit card and other payment information and + * lets the user change it. + * + * @module controllers/PaymentInstruments + */ + +/* API includes */ +var PaymentInstrument = require('dw/order/PaymentInstrument'); +var PaymentMgr = require('dw/order/PaymentMgr'); +var PaymentStatusCodes = require('dw/order/PaymentStatusCodes'); +var Status = require('dw/system/Status'); +var Transaction = require('dw/system/Transaction'); +var URLUtils = require('dw/web/URLUtils'); + +/* Script Modules */ +var app = require('~/cartridge/scripts/app'); +var guard = require('~/cartridge/scripts/guard'); +var constants = require("*/cartridge/adyenConstants/constants"); +// ### Custom Adyen cartridge start ### +var AdyenHelper = require('int_adyen_overlay/cartridge/scripts/util/adyenHelper'); +var AdyenConfigs = require('int_adyen_overlay/cartridge/scripts/util/adyenConfigs'); +var adyenSessions = require('int_adyen_overlay/cartridge/scripts/adyenSessions'); +var adyenSaveCreditCard = require("*/cartridge/scripts/adyenSaveCreditCard"); +var AdyenLogs = require("int_adyen_overlay/cartridge/scripts/adyenCustomLogs"); +// ### Custom Adyen cartridge end ### + +/** + * Displays a list of customer payment instruments. + * + * Gets customer payment instrument information. Clears the paymentinstruments form and adds the customer + * payment information to it. Updates the page metadata. + * Renders a list of the saved credit card payment instruments of the current + * customer (account/payment/paymentinstrumentlist template). + */ +// ### Custom Adyen cartridge start ### +function list() { + // Get the Saved Cards from Adyen to get latest saved cards + require('int_adyen_overlay/cartridge/scripts/updateSavedCards').updateSavedCards({ + CurrentCustomer: customer + }); + var paymentInstruments = getAdyenPaymentInstruments(); + var pageMeta = require('~/cartridge/scripts/meta'); + var paymentForm = app.getForm('paymentinstruments'); + paymentForm.clear(); + paymentForm.get('creditcards.storedcards').copyFrom(paymentInstruments); + pageMeta.update(dw.content.ContentMgr.getContent('myaccount-paymentsettings')); + app.getView({ + PaymentInstruments: paymentInstruments + }).render('account/payment/paymentinstrumentlist'); +} +// ### Custom Adyen cartridge end ## + +// ### Custom Adyen cartridge start ## +function getSessionData() { + var sessionsResponse = adyenSessions.createSession(null, customer, ''); + return { + id: sessionsResponse.id, + sessionData: sessionsResponse.sessionData + }; +} +// ### Custom Adyen cartridge end ## + +/** + * Adds a new credit card payment instrument to the saved payment instruments of the current customer. + * Sets the ContinueURL to PaymentInstruments-PaymentForm and renders the payment instrument details page + * (account/payment/paymentinstrumentdetails template). + * __Note:__this function is called by the {@link module:controllers/PaymentInstruments~handlePaymentForm|handlePaymentForm} function. + * @param {boolean} clearForm true or missing clears the form before displaying the page, false skips it + */ +function add(clearForm) { + var paymentForm = app.getForm('paymentinstruments'); + if (clearForm !== false) { + paymentForm.clear(); + } + paymentForm.get('creditcards.newcreditcard.type').setOptions(dw.order.PaymentMgr.getPaymentMethod(dw.order.PaymentInstrument.METHOD_CREDIT_CARD).activePaymentCards.iterator()); + app.getView({ + ContinueURL: URLUtils.https('PaymentInstruments-PaymentForm'), + SessionData: JSON.stringify(getSessionData()) + }).render('account/payment/paymentinstrumentdetails'); +} + +/** + * Form handler for the paymentinstruments form. Handles the following actions: + * - __create__ - calls the {@link module:controllers/PaymentInstruments~create|create} function to create a payment instrument + * and redirects to {@link module:controllers/PaymentInstruments~list|list}. If the + * creation fails, calls the {@link module:controllers/PaymentInstruments~add|add} function with a clearform value of false. + * - __error__ - calls the {@link module:controllers/PaymentInstruments~add|add} function with a clearform value of false. + */ +function handlePaymentForm() { + var paymentForm = app.getForm('paymentinstruments'); + paymentForm.handleAction({ + create: function () { + if (!create()) { + response.redirect(URLUtils.https('PaymentInstruments-List', 'error', 'AuthorisationFailed')); + return; + } else { + response.redirect(URLUtils.https('PaymentInstruments-List')); + } + }, + error: function () { + add(false); + } + }); +} +/** + * Saves a customer credit card payment instrument. + * @param {Object} params + * @param {dw.customer.CustomerPaymentInstrument} params.PaymentInstrument - credit card object. + * @param {dw.web.FormGroup} params.CreditCardFormFields - new credit card form. + */ +function save(params) { + var saveCustomerCreditCard = require('app_storefront_core/cartridge/scripts/checkout/SaveCustomerCreditCard'); + var result = saveCustomerCreditCard.save(params); + if (result === PIPELET_ERROR) { + throw new Error('Problem saving credit card'); + } +} + +/** + * Creates a new payment instrument. Verifies the credit card and checks if it is a duplicate of + * a card already in the current customer's payment instruments. In a transaction, the function + * attempts to save the credit card to the customer's payment instruments. If a duplicate card was + * detected, the original card is removed after the new card is created. If the card cannot be created + * successfully, the transaction is rolled back. Whether successful or not, the paymentinstruments + * form is cleared. + * + * @transaction + * @return {boolean} true if the credit card can be verified, false otherwise + */ +// ### Custom Adyen cartridge start ### +function create() { + if (getAdyenPaymentInstruments()) { + return adyenSaveCreditCard.create(); + } + var paymentForm = app.getForm('paymentinstruments'); + var newCreditCardForm = paymentForm.get('creditcards.newcreditcard'); + var ccNumber = newCreditCardForm.get('number').value(); + var wallet = customer.getProfile().getWallet(); + var paymentInstruments = wallet.getPaymentInstruments(dw.order.PaymentInstrument.METHOD_CREDIT_CARD); + if (AdyenConfigs.getAdyenRecurringPaymentsEnabled()) { + var createRecurringPaymentAccountResult = AdyenHelper.createRecurringPaymentAccount({ + Customer: customer + }); + if (createRecurringPaymentAccountResult.error) { + return false; + } + pspReference = 'PspReference' in createRecurringPaymentAccountResult && !empty(createRecurringPaymentAccountResult.PspReference) ? createRecurringPaymentAccountResult.PspReference : ''; + tokenID = 'TokenID' in createRecurringPaymentAccountResult && !empty(createRecurringPaymentAccountResult.TokenID) ? createRecurringPaymentAccountResult.TokenID : ''; + try { + Transaction.wrap(function () { + /* var newCreditCard = customer.getProfile().getWallet().createPaymentInstrument(PaymentInstrument.METHOD_CREDIT_CARD); + * // copy the credit card details to the payment instrument + * newCreditCard.setCreditCardHolder( + newCreditCard.setCreditCardNumber( + newCreditCard.setCreditCardType( + newCreditCard.setCreditCardToken(tokenID); + newCreditCard.custom.AdyenPspReference = pspReference; */ + require('int_adyen_overlay/cartridge/scripts/updateSavedCards').updateSavedCards({ + CurrentCustomer: customer, + PaymentsMap: createRecurringPaymentAccountResult.PaymentsMap + }); + }); + } catch (e) { + AdyenLogs.error_log(`${e}: ${e.stack}`); + return false; + } + return true; + } + var isDuplicateCard = false; + var oldCard; + for (var i = 0; i < paymentInstruments.length; i++) { + var card = paymentInstruments[i]; + if (card.creditCardNumber === ccNumber) { + isDuplicateCard = true; + oldCard = card; + break; + } + } + Transaction.begin(); + var paymentInstrument = wallet.createPaymentInstrument(dw.order.PaymentInstrument.METHOD_CREDIT_CARD); + try { + save({ + PaymentInstrument: paymentInstrument, + CreditCardFormFields: newCreditCardForm.object + }); + } catch (err) { + Transaction.rollback(); + return false; + } + if (isDuplicateCard) { + wallet.removePaymentInstrument(oldCard); + } + Transaction.commit(); + paymentForm.clear(); + return true; +} +// ### Custom Adyen cartridge end ### + +/** + * Form handler for the paymentinstruments form. Handles the following actions: + * - __remove__ - uses the form and action supplied by the FormModel to remove a customer payment instrument + * in a transaction. + * - __error__ - does nothing. + * + * In either case, redirects to the {@link module:controllers/PaymentInstruments~list|List} function. + * @transaction + * @TODO Should be moved into handlePaymentForm + * @FIXME Inner method should be lowercase.error action should do something + */ +// ### Custom Adyen cartridge start ### +function Delete() { + var paymentForm = app.getForm('paymentinstruments'); + paymentForm.handleAction({ + remove: function (formGroup, action) { + Transaction.wrap(function () { + var wallet = customer.getProfile().getWallet(); + var paymentInstrument = action.object; + if (!empty(paymentInstrument)) { + if (AdyenConfigs.getAdyenRecurringPaymentsEnabled() && !empty(paymentInstrument.getCreditCardToken())) { + var result = require('int_adyen_overlay/cartridge/scripts/adyenDeleteRecurringPayment').deleteRecurringPayment({ + Customer: customer, + RecurringDetailReference: paymentInstrument.getCreditCardToken() + }); + if (result == PIPELET_NEXT) { + wallet.removePaymentInstrument(paymentInstrument); + } + } else { + wallet.removePaymentInstrument(paymentInstrument); + } + } + }); + }, + error: function () { + // @TODO When could this happen + } + }); + response.redirect(URLUtils.https('PaymentInstruments-List')); +} +// ### Custom Adyen cartridge end ### + +/* + * Private helpers + */ +// ### Custom Adyen cartridge start ### +function getAdyenPaymentInstruments() { + var wallet = customer.getProfile().getWallet(); + return wallet.getPaymentInstruments(constants.METHOD_ADYEN_COMPONENT); +} +// ### Custom Adyen cartridge start ### + +/** + * Verifies if the entered credit card details are valid. + * + * @returns {boolean} true in case of success, otherwise false. + */ +// ### Custom Adyen cartridge start ### +function verifyCreditCard() { + var newCreditCardForm = app.getForm('paymentinstruments.creditcards.newcreditcard'); + if (getAdyenPaymentInstruments()) { + return true; + } + var expirationMonth = newCreditCardForm.get('expiration.month').value(); + var expirationYear = newCreditCardForm.get('expiration.year').value(); + var cardNumber = newCreditCardForm.get('number').value(); + var paymentCard = PaymentMgr.getPaymentCard(newCreditCardForm.get('type').value()); + var verifyPaymentCardResult = paymentCard.verify(expirationMonth, expirationYear, cardNumber); + if (verifyPaymentCardResult.error === true) { + if (!newCreditCardForm.isValid()) { + return false; + } + if (verifyPaymentCardResult.code === Status.OK) { + return true; + } + + // Invalidate the payment card form elements. + for (var i = 0; i < verifyPaymentCardResult.items.length; i++) { + if (verifyPaymentCardResult.items[i].code === PaymentStatusCodes.CREDITCARD_INVALID_CARD_NUMBER) { + newCreditCardForm.get('number').invalidate(); + } else if (verifyPaymentCardResult.items[i].code === PaymentStatusCodes.CREDITCARD_INVALID_EXPIRATION_DATE) { + newCreditCardForm.get('expiration.month').invalidate(); + newCreditCardForm.get('expiration.year').invalidate(); + } + } + return false; + } + return true; +} +// ### Custom Adyen cartridge end ### + +/* + * Web exposed methods + */ +/** Renders a list of the saved credit card payment instruments of the current customer. + * @see module:controllers/PaymentInstruments~list */ +exports.List = guard.ensure(['https', 'get', 'loggedIn'], list); +/** Adds a new credit card payment instrument to the saved payment instruments of the current customer. + * @see module:controllers/PaymentInstruments~add */ +exports.Add = guard.ensure(['https', 'get', 'loggedIn'], add); +/** Handles the submitted form for creating payment instruments. + * @see module:controllers/PaymentInstruments~handlePaymentForm */ +exports.PaymentForm = guard.ensure(['https', 'post', 'loggedIn', 'csrf'], handlePaymentForm); +/** Deletes a saved credit card payment instrument. + * @see module:controllers/PaymentInstruments~Delete */ +exports.Delete = guard.ensure(['https', 'loggedIn'], Delete); \ No newline at end of file diff --git a/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/package.json b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/package.json new file mode 100644 index 000000000..a9de38453 --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_controllers_changes/package.json @@ -0,0 +1,3 @@ +{ + "hooks": "./cartridge/scripts/hooks.json" +} diff --git a/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/billing.xml b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/billing.xml new file mode 100644 index 000000000..88f5bfe1d --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/billing.xml @@ -0,0 +1,77 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/creditcard.xml b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/creditcard.xml new file mode 100644 index 000000000..69198b20a --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/forms/default/creditcard.xml @@ -0,0 +1,74 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/scripts/util/Resource.ds b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/scripts/util/Resource.ds new file mode 100644 index 000000000..b360d2ce6 --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/scripts/util/Resource.ds @@ -0,0 +1,253 @@ +/** + * Resource helper + * + */ +var Currency = require('dw/util/Currency'); +var Site = require('dw/system/Site'); +var ContentMgr = require('dw/content/ContentMgr'); +var ProductAvailabilityModel = require('dw/catalog/ProductAvailabilityModel'); + +/* Script Modules */ +var AdyenHelper = require ("int_adyen_overlay/cartridge/scripts/util/adyenHelper"); + +function ResourceHelper() {} +/** + * Get the client-side constants + * @param pageContext + * @returns {Object} An objects key key-value pairs holding the constants + */ +ResourceHelper.getConstants = function(pageContext) { + return { + AVAIL_STATUS_IN_STOCK : ProductAvailabilityModel.AVAILABILITY_STATUS_IN_STOCK, + AVAIL_STATUS_PREORDER : ProductAvailabilityModel.AVAILABILITY_STATUS_PREORDER, + AVAIL_STATUS_BACKORDER : ProductAvailabilityModel.AVAILABILITY_STATUS_BACKORDER, + AVAIL_STATUS_NOT_AVAILABLE : ProductAvailabilityModel.AVAILABILITY_STATUS_NOT_AVAILABLE + }; +} +/** + * Get the client-side resources of a given page + * @param pageContext + * @returns {Object} An objects key key-value pairs holding the resources + */ +ResourceHelper.getResources = function(pageContext) { + var Resource = require('dw/web/Resource'); + + // application resources + var resources = { + // Common + I_AGREE : Resource.msg('global.i_agree', 'locale', null), + TRACKING_CONSENT : Resource.msg('global.tracking_consent', 'locale', null), + TRACKING_NO_CONSENT : Resource.msg('global.tracking_no_consent', 'locale', null), + CLOSE : Resource.msg('global.close', 'locale', null), + NO_THANKS : Resource.msg('global.nothanks', 'locale', null), + OK : Resource.msg('global.ok', 'locale', null), + ARE_YOU_HUMAN : Resource.msg('global.captcha.areyouhuman', 'locale', null), + + // Checkout + SHIP_QualifiesFor : Resource.msg('shipment.qualifiesfor', 'checkout', null), + CC_LOAD_ERROR : Resource.msg('billing.creditcardloaderror', 'checkout', null), + COULD_NOT_SAVE_ADDRESS : Resource.msg('multishippingaddresses.couldnotsaveaddress', 'checkout', null), + + // Registry resources + REG_ADDR_ERROR : Resource.msg('global.couldntloadaddress', 'locale', null), + + // bonus products messages + BONUS_PRODUCT : Resource.msg('product.bonusproduct', 'product', null), + BONUS_PRODUCTS : Resource.msg('product.bonusproducts', 'product', null), + SELECT_BONUS_PRODUCTS : Resource.msg('product.selectbonusproducts', 'product', null), + SELECT_BONUS_PRODUCT : Resource.msg('product.selectbonusproduct', 'product', null), + BONUS_PRODUCT_MAX : Resource.msg('product.bonusproductsmax', 'product', null), + BONUS_PRODUCT_TOOMANY : Resource.msg('product.bonusproductstoomany', 'product', null), + SIMPLE_SEARCH : Resource.msg('simplesearch.searchtext', 'search', null), + SUBSCRIBE_EMAIL_DEFAULT : Resource.msg('subscribe.email.default', 'forms', 'Email Address'), + + CURRENCY_SYMBOL : Currency.getCurrency(Site.current.getDefaultCurrency()).symbol, + MISSINGVAL : Resource.msg('global.missingval', 'locale', null), + SERVER_ERROR : Resource.msg('global.servererror', 'locale', null), + MISSING_LIB : Resource.msg('global.missinglib', 'locale', null), + BAD_RESPONSE : Resource.msg('global.badresponse', 'locale', null), + INVALID_PHONE : Resource.msg('global.invalidphone', 'locale', null), + REMOVE : Resource.msg('global.remove', 'locale', null), + QTY : Resource.msg('global.qty', 'locale', null), + EMPTY_IMG_ALT : Resource.msg('global.remove', 'locale', null), + COMPARE_BUTTON_LABEL : Resource.msg('productcomparewidget.compareitemsbutton', 'search', null), + COMPARE_CONFIRMATION : Resource.msg('productcomparewidget.maxproducts', 'search', null), + COMPARE_REMOVE_FAIL : Resource.msg('productcomparewidget.removefail', 'search', null), + COMPARE_ADD_FAIL : Resource.msg('productcomparewidget.addfail', 'search', null), + ADD_TO_CART_FAIL : Resource.msg('cart.unableToAdd', 'checkout', null), + REGISTRY_SEARCH_ADVANCED_CLOSE : Resource.msg('account.giftregistry.closeadvanced', 'account', null), + GIFT_CERT_INVALID : Resource.msg('billing.giftcertinvalid', 'checkout', null), + GIFT_CERT_BALANCE : Resource.msg('billing.giftcertbalance', 'checkout', null), + GIFT_CERT_AMOUNT_INVALID : Resource.msg('giftcert.amountvalueerror', 'forms', null), + GIFT_CERT_MISSING : Resource.msg('billing.giftcertidmissing', 'checkout', null), + INVALID_OWNER : Resource.msg('billing.ownerparseerror', 'checkout', null), + COUPON_CODE_MISSING : Resource.msg('cart.COUPON_CODE_MISSING', 'checkout', null), + COOKIES_DISABLED : Resource.msg('global.browsertoolscheck.cookies', 'locale', null), + BML_AGREE_TO_TERMS : Resource.msg('bml.termserror', 'forms', null), + CHAR_LIMIT_MSG : Resource.msg('character.limit', 'forms', null), + CONFIRM_DELETE : Resource.msg('confirm.delete', 'forms', null), + TITLE_GIFTREGISTRY : Resource.msg('title.giftregistry', 'forms', null), + TITLE_ADDRESS : Resource.msg('title.address', 'forms', null), + TITLE_CREDITCARD : Resource.msg('title.creditcard', 'forms', null), + SERVER_CONNECTION_ERROR : Resource.msg('global.serverconnection', 'locale', 'Server connection failed!'), + IN_STOCK_DATE : Resource.msg('global.inStockDate', 'locale', null), + ITEM_STATUS_NOTAVAILABLE : Resource.msg('global.allnotavailable', 'locale', null), + INIFINITESCROLL : Resource.msg('paginginformation.infinite-scroll', 'search', null), + STORE_NEAR_YOU : Resource.msg('storelist.lightbox.whatsavailable', 'storepickup', 'What\'s available at a store near you'), + SELECT_STORE : Resource.msg('storelist.lightbox.selectstore', 'storepickup', null), + SELECTED_STORE : Resource.msg('storelist.lightbox.selectedstore', 'storepickup', null), + PREFERRED_STORE : Resource.msg('storelist.lightbox.preferredstore', 'storepickup', null), + SET_PREFERRED_STORE : Resource.msg('storelist.lightbox.setpreferredstore', 'storepickup', null), + ENTER_ZIP : Resource.msg('storelist.lightbox.enterzip', 'storepickup', null), + INVALID_ZIP : Resource.msg('storelist.lightbox.invalidpostalcode', 'storepickup', null), + SEARCH : Resource.msg('global.search', 'locale', null), + CHANGE_LOCATION : Resource.msg('storelist.lightbox.changelocation', 'storepickup', null), + CONTINUE_WITH_STORE : Resource.msg('storelist.lightbox.continuewithstore', 'storepickup', null), + CONTINUE : Resource.msg('global.continue', 'locale', null), + SEE_MORE : Resource.msg('storelist.lightbox.seemore', 'storepickup', null), + SEE_LESS : Resource.msg('storelist.lightbox.seeless', 'storepickup', null), + QUICK_VIEW : Resource.msg('product.quickview', 'product', null), + QUICK_VIEW_POPUP : Resource.msg('product.quickview.popup', 'product', null), + TLS_WARNING : Resource.msg('global.browsertoolscheck.tls', 'locale', null), + CSRF_TOKEN_MISMATCH : Resource.msg('global.csrf.failed.error', 'locale', null), + + // Validation messages + VALIDATE_REQUIRED : Resource.msg('validate.required', 'forms', null), + VALIDATE_REMOTE : Resource.msg('validate.remote', 'forms', null), + VALIDATE_EMAIL : Resource.msg('validate.email', 'forms', null), + VALIDATE_URL : Resource.msg('validate.url', 'forms', null), + VALIDATE_DATE : Resource.msg('validate.date', 'forms', null), + VALIDATE_DATEISO : Resource.msg('validate.dateISO', 'forms', null), + VALIDATE_NUMBER : Resource.msg('validate.number', 'forms', null), + VALIDATE_DIGITS : Resource.msg('validate.digits', 'forms', null), + VALIDATE_CREDITCARD : Resource.msg('validate.creditcard', 'forms', null), + VALIDATE_EQUALTO : Resource.msg('validate.equalTo', 'forms', null), + VALIDATE_MAXLENGTH : Resource.msg('validate.maxlength', 'forms', null), + VALIDATE_MINLENGTH : Resource.msg('validate.minlength', 'forms', null), + VALIDATE_RANGELENGTH : Resource.msg('validate.rangelength', 'forms', null), + VALIDATE_RANGE : Resource.msg('validate.range', 'forms', null), + VALIDATE_MAX : Resource.msg('validate.max', 'forms', null), + VALIDATE_MIN : Resource.msg('validate.min', 'forms', null), + ADYEN_CC_VALIDATE : Resource.msg('adyen.creditcard', 'adyen', null) + + }; + + // additional resources + resources[ProductAvailabilityModel.AVAILABILITY_STATUS_IN_STOCK] = Resource.msg('global.instock', 'locale', null); + resources["QTY_" + ProductAvailabilityModel.AVAILABILITY_STATUS_IN_STOCK] = Resource.msg('global.quantityinstock', 'locale', null); + resources[ProductAvailabilityModel.AVAILABILITY_STATUS_PREORDER] = Resource.msg('global.allpreorder', 'locale', null); + resources["QTY_" + ProductAvailabilityModel.AVAILABILITY_STATUS_PREORDER] = Resource.msg('global.quantitypreorder', 'locale', null); + resources["REMAIN_" + ProductAvailabilityModel.AVAILABILITY_STATUS_PREORDER] = Resource.msg('global.remainingpreorder', 'locale', null); + resources[ProductAvailabilityModel.AVAILABILITY_STATUS_BACKORDER] = Resource.msg('global.allbackorder', 'locale', null); + resources["QTY_" + ProductAvailabilityModel.AVAILABILITY_STATUS_BACKORDER] = Resource.msg('global.quantitybackorder', 'locale', null); + resources["REMAIN_" + ProductAvailabilityModel.AVAILABILITY_STATUS_BACKORDER] = Resource.msg('global.remainingbackorder', 'locale', null); + resources[ProductAvailabilityModel.AVAILABILITY_STATUS_NOT_AVAILABLE] = Resource.msg('global.allnotavailable', 'locale', null); + resources["REMAIN_" + ProductAvailabilityModel.AVAILABILITY_STATUS_NOT_AVAILABLE] = Resource.msg('global.remainingnotavailable', 'locale', null); + + return resources; +} + +/** + * Get the client-side URLs of a given page + * @returns {Object} An objects key key-value pairs holding the URLs + */ +ResourceHelper.getUrls = function(pageContext) { + var URLUtils = require('dw/web/URLUtils'); + var Resource = require('dw/web/Resource'); + + // application urls + var urls = { + appResources : URLUtils.url('Resources-Load').toString(), + pageInclude : URLUtils.url('Page-Include').toString(), + continueUrl : request.isHttpSecure() ? URLUtils.httpsContinue().toString() : URLUtils.httpContinue().toString(), + staticPath : URLUtils.staticURL("/").toString(), + addGiftCert : URLUtils.url('GiftCert-Purchase').toString(), + minicartGC : URLUtils.url('GiftCert-ShowMiniCart').toString(), + addProduct : URLUtils.url('Cart-AddProduct').toString(), + minicart : URLUtils.url('Cart-MiniAddProduct').toString(), + cartShow : URLUtils.url('Cart-Show').toString(), + giftRegAdd : URLUtils.https('Address-GetAddressDetails', 'addressID', '').toString(), + paymentsList : URLUtils.https('PaymentInstruments-List').toString(), + addressesList : URLUtils.https('Address-List').toString(), + wishlistAddress : URLUtils.https('Wishlist-SetShippingAddress').toString(), + deleteAddress : URLUtils.url('Address-Delete').toString(), + getProductUrl : URLUtils.url('Product-Show').toString(), + getBonusProducts : URLUtils.url('Product-GetBonusProducts').toString(), + addBonusProduct : URLUtils.url('Cart-AddBonusProduct').toString(), + getSetItem : URLUtils.url('Product-GetSetItem').toString(), + productDetail : URLUtils.url('Product-Detail').toString(), + getAvailability : URLUtils.url('Product-GetAvailability').toString(), + removeImg : URLUtils.staticURL('/images/icon_remove.gif').toString(), + searchsuggest : URLUtils.url('Search-GetSuggestions').toString(), + productNav : URLUtils.url('Product-Productnav').toString(), + summaryRefreshURL : URLUtils.url('COBilling-UpdateSummary').toString(), + billingSelectCC : URLUtils.https('COBilling-SelectCreditCard').toString(), + updateAddressDetails : URLUtils.https('COShipping-UpdateAddressDetails').toString(), + updateAddressDetailsBilling : URLUtils.https('COBilling-UpdateAddressDetails').toString(), + shippingMethodsJSON : URLUtils.https('COShipping-GetApplicableShippingMethodsJSON').toString(), + shippingMethodsList : URLUtils.https('COShipping-UpdateShippingMethodList').toString(), + selectShippingMethodsList : URLUtils.https('COShipping-SelectShippingMethod').toString(), + resetPaymentForms : URLUtils.url('COBilling-ResetPaymentForms').toString(), + compareShow : URLUtils.url('Compare-Show').toString(), + compareAdd : URLUtils.url('Compare-AddProduct').toString(), + compareRemove : URLUtils.url('Compare-RemoveProduct').toString(), + compareEmptyImage : URLUtils.staticURL('/images/comparewidgetempty.png').toString(), + giftCardCheckBalance : URLUtils.https('COBilling-GetGiftCertificateBalance').toString(), + redeemGiftCert : URLUtils.https('COBilling-RedeemGiftCertificateJson').toString(), + addCoupon : URLUtils.https('Cart-AddCouponJson').toString(), + storesInventory : URLUtils.url('StoreInventory-Inventory').toString(), + setPreferredStore : URLUtils.url('StoreInventory-SetPreferredStore').toString(), + getPreferredStore : URLUtils.url('StoreInventory-GetPreferredStore').toString(), + setStorePickup : URLUtils.url('StoreInventory-SetStore').toString(), + setZipCode : URLUtils.url('StoreInventory-SetZipCode').toString(), + getZipCode : URLUtils.url('StoreInventory-GetZipCode').toString(), + billing : URLUtils.url('COBilling-Start').toString(), + setSessionCurrency : URLUtils.url('Currency-SetSessionCurrency').toString(), + addEditAddress : URLUtils.url('COShippingMultiple-AddEditAddressJSON').toString(), + cookieHint : URLUtils.url('Page-Show', 'cid', 'cookie_hint').toString(), + consentTracking : URLUtils.url('Page-Show', 'cid', 'consent_tracking_hint').toString(), + consentTrackingSetSession : URLUtils.url('Account-ConsentTracking').toString(), + rateLimiterReset : URLUtils.url('RateLimiter-HideCaptcha').toString(), + csrffailed : URLUtils.url('CSRF-Failed').toString() + }; + return urls; +} +/** + * Get the client-side preferences of a given page + * @returns {Object} An objects key key-value pairs holding the preferences + */ +ResourceHelper.getPreferences = function(pageContext) { + var cookieHintAsset = ContentMgr.getContent('cookie_hint'); + var consentTrackingHintAsset = ContentMgr.getContent('consent_tracking_hint'); + return { + LISTING_INFINITE_SCROLL: (Site.getCurrent().getCustomPreferenceValue('enableInfiniteScroll') ? true : false), + LISTING_REFINE_SORT: true, + STORE_PICKUP: Site.getCurrent().getCustomPreferenceValue('enableStorePickUp'), + COOKIE_HINT: (cookieHintAsset && cookieHintAsset.online) || false, + CONSENT_TRACKING_HINT: (consentTrackingHintAsset && consentTrackingHintAsset.online) || false, + CHECK_TLS: Site.getCurrent().getCustomPreferenceValue('checkTLS'), + ADYEN_SF_ENABLED : dw.order.PaymentMgr.getPaymentMethod('AdyenComponent').isActive() + || (dw.order.PaymentMgr.getPaymentMethod('CREDIT_CARD') && ['Adyen_Component', 'ADYEN_CREDIT'].indexOf(dw.order.PaymentMgr.getPaymentMethod('CREDIT_CARD').getPaymentProcessor().getID()) > -1) + }; +} +/** + * Get the client-side preferences of a given page + * @returns {Object} An objects key key-value pairs holding the preferences + */ +ResourceHelper.getSessionAttributes = function(pageContext) { + return { + SHOW_CAPTCHA: session.privacy.showCaptcha + }; +} +/** + * Get the client-side user settings + * @returns {Object} An objects key key-value pairs holding the settings + */ +ResourceHelper.getUserSettings = function(pageContext) { + var ProductAvailabilityModel = require('dw/catalog/ProductAvailabilityModel'); + var AdyenHelper = require ("int_adyen_overlay/cartridge/scripts/util/adyenHelper"); + return { + zip: session.custom.zipcode == "null" ? null : session.custom.zipcode, + storeId: session.custom.storeId == "null" ? null : session.custom.storeId + }; +} diff --git a/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/static/default/js/app.js b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/static/default/js/app.js new file mode 100644 index 000000000..f4f220cf1 --- /dev/null +++ b/cartridges/adyen_controllers_changes/app_storefront_core_changes/cartridge/static/default/js/app.js @@ -0,0 +1,11072 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a;}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r);},p,p.exports,r,e,n,t);}return n[i].exports;}for(var u="function"==typeof require&&require,i=0;i{if(paypalTerminatedEarly){paymentFromComponent({cancelTransaction:true,merchantReference:document.querySelector('#merchantReference').value});paypalTerminatedEarly=false;return actions.resolve();}paypalTerminatedEarly=true;$('#dwfrm_billing').trigger('submit');if(formErrorsExist){paypalTerminatedEarly=false;return actions.reject();}},onSubmit:(state,component)=>{assignPaymentMethodValue();paymentFromComponent(state.data,component);document.querySelector('#adyenStateData').value=JSON.stringify(state.data);},onCancel:(data,component)=>{paypalTerminatedEarly=false;paymentFromComponent({cancelTransaction:true,merchantReference:document.querySelector('#merchantReference').value},component);},onError:(/* error, component */)=>{paypalTerminatedEarly=false;$('#dwfrm_billing').trigger('submit');},onAdditionalDetails:(state/* , component */)=>{paypalTerminatedEarly=false;document.querySelector('#paymentFromComponentStateData').value=JSON.stringify(state.data);$('#dwfrm_billing').trigger('submit');}},mbway:{showPayButton:true,onSubmit:(state,component)=>{$('#dwfrm_billing').trigger('submit');assignPaymentMethodValue();if(formErrorsExist){return false;}document.getElementById('component_mbway').querySelector('button').disabled=true;paymentFromComponent(state.data,component);document.querySelector('#adyenStateData').value=JSON.stringify(state.data);},onError:(/* error, component */)=>{$('#dwfrm_billing').trigger('submit');},onAdditionalDetails:(state/* , component */)=>{document.querySelector('#paymentFromComponentStateData').value=JSON.stringify(state.data);$('#dwfrm_billing').trigger('submit');}},swish:getQRCodeConfig(),bcmc_mobile:getQRCodeConfig(),wechatpayQR:getQRCodeConfig(),pix:getQRCodeConfig(),amazonpay:getAmazonpayConfig()};if(window.googleMerchantID!=='null'&&window.Configuration.environment==='live'){checkoutConfiguration.paymentMethodsConfiguration.paywithgoogle.configuration.merchantIdentifier=window.googleMerchantID;checkoutConfiguration.paymentMethodsConfiguration.googlepay.configuration.merchantIdentifier=window.googleMerchantID;}if(window.cardholderNameBool!=='null'){checkoutConfiguration.paymentMethodsConfiguration.card.hasHolderName=true;checkoutConfiguration.paymentMethodsConfiguration.card.holderNameRequired=true;}checkoutConfiguration.session={id:window.sessionsResponse.id,sessionData:window.sessionsResponse.sessionData};checkout=await AdyenCheckout(checkoutConfiguration);paymentMethodsResponse=checkout.paymentMethodsResponse;document.querySelector('#paymentMethodsList').innerHTML='';renderGenericComponent();}}function zeroAuth(data,checkout){$.ajax({url:window.zeroAuthURL,type:'POST',contentType:'application/; charset=utf-8',data:JSON.stringify(data),async:false,success:function(data){if(data.zeroAuthResult.action){document.querySelector('#buttonsContainer').style.display='none';checkout.createFromAction(data.zeroAuthResult.action).mount('#newCard');}if(data.zeroAuthResult.resultCode==='Authorised'){window.location.href=window.paymentInstrumentsList;}else if(data.zeroAuthResult.resultCode==='Refused'){window.location.href=window.paymentInstrumentsListError;}}});}function paymentsDetails(state){$.ajax({type:'post',url:window.paymentsDetails,data:JSON.stringify({data:state.data}),contentType:'application/; charset=utf-8',async:false,success(data){if(data.response.isSuccessful){window.location.href=window.paymentInstrumentsList;}else if(!data.response.isFinal&&typeof data.response.action==='object'){checkout.createFromAction(data.action).mount('#action-container');}else{window.location.href=window.paymentInstrumentsListError;}}});}/** + * @function + * @description Initializes Adyen Checkout My Account events + */async function initializeAccountEvents(){checkoutConfiguration=window.Configuration;checkoutConfiguration.onAdditionalDetails=function(state){paymentsDetails(state);};checkoutConfiguration.session=window.sessionData;checkout=await AdyenCheckout(checkoutConfiguration);var newCard=document.getElementById('newCard');var adyenStateData;var isValid=false;var node=checkout.create('card',{hasHolderName:true,holderNameRequired:true,onChange:function(state){adyenStateData=state.data;isValid=state.isValid;}}).mount(newCard);$('#applyBtn').on('click',function(e){e.preventDefault();if(!isValid){node.showValidation();return false;}document.querySelector('#adyenStateData').value=JSON.stringify(adyenStateData);zeroAuth(adyenStateData,checkout);});}function assignPaymentMethodValue(){var adyenPaymentMethod=document.querySelector('#adyenPaymentMethodName');adyenPaymentMethod.value=document.querySelector(`#lb_${selectedMethod}`).innerHTML;}/** + * To avoid re-rendering components twice, unmounts existing components from payment methods list + */function unmountComponents(){var promises=Object.entries(componentsObj).map(function([key,val]){delete componentsObj[key];return resolveUnmount(key,val);});return Promise.all(promises);}function resolveUnmount(key,val){try{return Promise.resolve(val.node.unmount(`component_${key}`));}catch(e){// try/catch block for val.unmount +return Promise.resolve(false);}}function displaySelectedMethod(type){selectedMethod=type;resetPaymentMethod();if(['paypal','paywithgoogle','googlepay','mbway','amazonpay',...qrCodeMethods].indexOf(type)>-1){document.querySelector('#billing-submit').disabled=true;}else{document.querySelector('#billing-submit').disabled=false;}document.querySelector(`#component_${type}`).setAttribute('style','display:block');}function resetPaymentMethod(){$('.additionalFields').hide();}function showValidation(){if(componentsObj[selectedMethod]&&!componentsObj[selectedMethod].isValid){componentsObj[selectedMethod].node.showValidation();return false;}return true;}/** + * Assigns stateData value to the hidden stateData input field + * so it's sent to the backend for processing + */function validateComponents(){var stateData;if(componentsObj[selectedMethod]&&componentsObj[selectedMethod].stateData){stateData=componentsObj[selectedMethod].stateData;}else{var type=document.querySelector(`#component_${selectedMethod} .type`)?document.querySelector(`#component_${selectedMethod} .type`).value:selectedMethod;stateData={paymentMethod:{type:type}};var brandElm=document.querySelector(`#component_${selectedMethod} .brand`);if(brandElm&&brandElm.value){stateData.paymentMethod.brand=brandElm.value;}}document.querySelector('#adyenStateData').value=JSON.stringify(stateData);}/** + * Contains fallback components for payment methods that don't have an Adyen web component yet + */function getFallback(paymentMethod){var fallback={giftcard:` + + `};return fallback[paymentMethod.type];}/** + * Renders all payment methods (including card component) retrieved from Adyen session + */async function renderGenericComponent(){if(Object.keys(componentsObj).length){await unmountComponents();}checkoutConfiguration.paymentMethodsResponse=paymentMethodsResponse.paymentMethods;if(sessionsResponse.amount){checkoutConfiguration.amount=sessionsResponse.amount;checkoutConfiguration.paymentMethodsConfiguration.paypal.amount=sessionsResponse.amount;checkoutConfiguration.paymentMethodsConfiguration.amazonpay.amount=sessionsResponse.amount;setInstallments(sessionsResponse.amount);}if(sessionsResponse.countryCode){checkoutConfiguration.countryCode=sessionsResponse.countryCode;}var amazonpay=paymentMethodsResponse.paymentMethods.find(paymentMethod=>paymentMethod.type==='amazonpay');if(amazonpay){checkoutConfiguration.paymentMethodsConfiguration.amazonpay.configuration=amazonpay.configuration;}if(paymentMethodsResponse.storedPaymentMethods){for(var i=0;i{renderPaymentMethod(pm,false,sessionsResponse.imagePath);});var firstPaymentMethod=document.querySelector('input[type=radio][name=brandCode]');firstPaymentMethod.checked=true;displaySelectedMethod(firstPaymentMethod.value);}function getPaymentMethodID(isStored,paymentMethod){if(isStored){return`storedCard${paymentMethod.id}`;}if(paymentMethod.brand){// gift cards all share the same type. Brand is used to differentiate between them +return`${paymentMethod.type}_${paymentMethod.brand}`;}return paymentMethod.type;}function renderPaymentMethod(paymentMethod,storedPaymentMethodBool,path){var paymentMethodsUI=document.querySelector('#paymentMethodsList');var li=document.createElement('li');var paymentMethodID=getPaymentMethodID(storedPaymentMethodBool,paymentMethod);var isSchemeNotStored=paymentMethod.type==='scheme'&&!storedPaymentMethodBool;var paymentMethodImage=storedPaymentMethodBool?`${path}${paymentMethod.brand}.png`:`${path}${paymentMethod.type}.png`;var cardImage=`${path}card.png`;var imagePath=isSchemeNotStored?cardImage:paymentMethodImage;var label=storedPaymentMethodBool?`${paymentMethod.name} ${MASKED_CC_PREFIX}${paymentMethod.lastFour}`:`${paymentMethod.name}`;var liContents=` + + + + `;var container=document.createElement('div');li.innerHTML=liContents;li.classList.add('paymentMethod');var node=renderCheckoutComponent(storedPaymentMethodBool,checkout,paymentMethod,container,paymentMethodID);container.classList.add('additionalFields');container.setAttribute('id',`component_${paymentMethodID}`);container.setAttribute('style','display:none');li.append(container);paymentMethodsUI.append(li);if(paymentMethod.type!=='paywithgoogle'){node&&node.mount(container);}else{node.isAvailable().then(()=>{node.mount(container);}).catch(()=>{});// eslint-disable-line no-empty +}var input=document.querySelector(`#rb_${paymentMethodID}`);input.onchange=async function(event){if(document.querySelector('.adyen-checkout__qr-loader')&&qrCodeMethods.indexOf(selectedMethod)>-1||paypalTerminatedEarly){paypalTerminatedEarly=false;paymentFromComponent({cancelTransaction:true,merchantReference:document.querySelector('#merchantReference').value});}displaySelectedMethod(event.target.value);};if(paymentMethodID==='giropay'){container.innerHTML='';}if(componentsObj[paymentMethodID]&&!container.childNodes[0]&&['bcmc','scheme'].indexOf(paymentMethodID)===-1){componentsObj[paymentMethodID].isValid=true;}}function renderCheckoutComponent(storedPaymentMethodBool,checkout,paymentMethod,container,paymentMethodID){if(storedPaymentMethodBool){return createCheckoutComponent(checkout,paymentMethod,container,paymentMethodID);}var fallback=getFallback(paymentMethod);if(fallback){var template=document.createElement('template');template.innerHTML=fallback;container.append(template.content);return;}return createCheckoutComponent(checkout,paymentMethod,container,paymentMethodID);}function getPersonalDetails(){const shippingAddress=sessionsResponse.shippingAddress;return{firstName:shippingAddress.firstName,lastName:shippingAddress.lastName,telephoneNumber:shippingAddress.phone};}function createCheckoutComponent(checkout,paymentMethod,container,paymentMethodID){try{var nodeData=Object.assign(paymentMethod,{data:Object.assign(getPersonalDetails(),{personalDetails:getPersonalDetails()}),visibility:{personalDetails:'editable',billingAddress:'hidden',deliveryAddress:'hidden'}});var node=checkout.create(paymentMethod.type,nodeData);if(!componentsObj[paymentMethodID]){componentsObj[paymentMethodID]={};}componentsObj[paymentMethodID].node=node;return node;}catch(e){}// eslint-disable-line no-empty +return false;}/** + * Makes an ajax call to the controller function PaymentFromComponent. + * Used by certain payment methods like paypal + */function paymentFromComponent(data,component){$.ajax({url:window.paymentFromComponentURL,type:'post',data:JSON.stringify(data),contentType:'application/; charset=utf-8',success:function(data){if(data.result&&data.result.orderNo&&data.result.orderToken){document.querySelector('#orderToken').value=data.result.orderToken;document.querySelector('#merchantReference').value=data.result.orderNo;}if(data.result&&data.result.fullResponse&&data.result.fullResponse.action){component.handleAction(data.result.fullResponse.action);}else{document.querySelector('#paymentFromComponentStateData').value=JSON.stringify('null');$('#dwfrm_billing').trigger('submit');}}}).fail(function/* xhr, textStatus */(){});}$('#dwfrm_billing').submit(function(e){if(['paypal','mbway','amazonpay',...qrCodeMethods].indexOf(selectedMethod)>-1&&!document.querySelector('#paymentFromComponentStateData').value){e.preventDefault();var form=$(this);var url=form.attr('action');$.ajax({type:'POST',url:url,data:form.serialize(),async:false,success:function(data){formErrorsExist=data.fieldErrors;}});}});function getQRCodeConfig(){return{showPayButton:true,onSubmit:(state,component)=>{$('#dwfrm_billing').trigger('submit');if(formErrorsExist){return;}assignPaymentMethodValue();document.querySelector('#adyenStateData').value=JSON.stringify(state.data);paymentFromComponent(state.data,component);},onAdditionalDetails:(state/* , component */)=>{document.querySelector('#paymentFromComponentStateData').value=JSON.stringify(state.data);$('#dwfrm_billing').trigger('submit');}};}function getCardConfig(){return{enableStoreDetails:showStoreDetails,onBrand:function(brandObject){$('#cardType').val(brandObject.brand);},onFieldValid:function(data){if(data.endDigits){maskedCardNumber=MASKED_CC_PREFIX+data.endDigits;$('#cardNumber').val(maskedCardNumber);}},onChange:function(state){isValid=state.isValid;var methodToUpdate=state.data.paymentMethod.storedPaymentMethodId?`storedCard${state.data.paymentMethod.storedPaymentMethodId}`:selectedMethod;$('#browserInfo').val(JSON.stringify(state.data.browserInfo));componentsObj[methodToUpdate].isValid=isValid;componentsObj[methodToUpdate].stateData=state.data;}};}function getGooglePayConfig(){return{environment:window.Configuration.environment,onSubmit:()=>{assignPaymentMethodValue();document.querySelector('#billing-submit').disabled=false;document.querySelector('#billing-submit').click();},configuration:{gatewayMerchantId:window.merchantAccount},showPayButton:true,buttonColor:'white'};}function getAmazonpayConfig(){return{showPayButton:true,productType:'PayAndShip',checkoutMode:'ProcessOrder',locale:window.Configuration.locale,returnUrl:window.returnURL,addressDetails:{name:sessionsResponse.shippingAddress.firstName+' '+sessionsResponse.shippingAddress.lastName,addressLine1:sessionsResponse.shippingAddress.address1,city:sessionsResponse.shippingAddress.city,stateOrRegion:sessionsResponse.shippingAddress.city,postalCode:sessionsResponse.shippingAddress.postalCode,countryCode:sessionsResponse.shippingAddress.country,phoneNumber:sessionsResponse.shippingAddress.phone},onClick:(resolve,reject)=>{$('#dwfrm_billing').trigger('submit');if(formErrorsExist){reject();}else{assignPaymentMethodValue();resolve();}},onError:()=>{}};}function getInstallmentValues(maxValue){const values=[];for(let i=1;i<=maxValue;i+=1){values.push(i);}return values;}function setInstallments(amount){try{if(installmentLocales.indexOf(window.Configuration.locale)<0){return;}const[minAmount,numOfInstallments]=window.installments?window.installments.replace(/\[|]/g,'').split(','):[null,null];if(minAmount<=amount.value){checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions={card:{}};// eslint-disable-next-line max-len +checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions.card.values=getInstallmentValues(numOfInstallments);checkoutConfiguration.paymentMethodsConfiguration.card.showInstallmentAmounts=true;}}catch(e){}// eslint-disable-line no-empty +}/** + * @function + * @description Initializes Adyen CSE billing events + */exports.initBilling=function(){initializeBillingEvents();};exports.initAccount=function(){initializeAccountEvents();};exports.renderGenericComponent=function(){renderGenericComponent();};},{"./adyen-giving":2,"./amazon":4,"./summary":50}],2:[function(require,module,exports){let donation;function handleOnDonate(state,component){if(!state.isValid){return;}const selectedAmount=state.data.amount;const donationData={amountValue:selectedAmount.value,amountCurrency:selectedAmount.currency,orderNo:window.orderNo,pspReference:window.pspReference};$.ajax({url:window.donateURL,type:'post',data:JSON.stringify(donationData),contentType:'application/; charset=utf-8',success(){component.setStatus('success');}});}function handleOnCancel(){const adyenGiving=document.getElementById('adyenGiving');adyenGiving.style.transition='all 3s ease-in-out';adyenGiving.style.display='none';donation.unmount();}if(document.querySelector('.adyen-payment-details')&&window.adyenGivingAvailable){const adyenGivingNode=document.getElementById('donate-container');let amounts;try{amounts=JSON.parse(window.donationAmounts);}catch(e){amounts=[];}const donationConfig={amounts,backgroundUrl:window.adyenGivingBackgroundUrl,description:window.charityDescription,logoUrl:window.adyenGivingLogoUrl,name:window.charityName,url:window.charityWebsite,showCancelButton:true,onDonate:handleOnDonate,onCancel:handleOnCancel};AdyenCheckout(window.Configuration).then(checkout=>{checkout.create('donation',donationConfig).mount(adyenGivingNode);});}},{}],3:[function(require,module,exports){'use strict';var progress=require('./progress'),util=require('./util');var currentRequests=[];/** + * @function + * @description Ajax request to get json response + * @param {Boolean} async Asynchronous or not + * @param {String} url URI for the request + * @param {Object} data Name/Value pair data request + * @param {Function} callback Callback function to be called + */var getJson=function(options){options.url=util.toAbsoluteUrl(options.url);// return if no url exists or url matches a current request +if(!options.url||currentRequests[options.url]){return;}currentRequests[options.url]=true;// make the server call +$.ajax({dataType:'json',url:options.url,async:typeof options.async==='undefined'||options.async===null?true:options.async,data:options.data||{}})// success +.done(function(response){if(options.callback){options.callback(response);}})// failed +.fail(function(xhr,textStatus){if(textStatus==='parsererror'){window.alert(Resources.BAD_RESPONSE);}if(options.callback){options.callback(null);}})// executed on success or fail +.always(function(){// remove current request from hash +if(currentRequests[options.url]){delete currentRequests[options.url];}});};/** + * @function + * @description ajax request to load html response in a given container + * @param {String} url URI for the request + * @param {Object} data Name/Value pair data request + * @param {Function} callback Callback function to be called + * @param {Object} target Selector or element that will receive content + */var load=function(options){options.url=util.toAbsoluteUrl(options.url);// return if no url exists or url matches a current request +if(!options.url||currentRequests[options.url]){return;}currentRequests[options.url]=true;// make the server call +$.ajax({dataType:'html',url:util.appendParamToURL(options.url,'format','ajax'),data:options.data,xhrFields:{withCredentials:true}}).done(function(response){// success +if(options.target){$(options.target).empty().html(response);}if(options.callback){options.callback(response);}}).fail(function(xhr,textStatus){// failed +if(textStatus==='parsererror'){window.alert(Resources.BAD_RESPONSE);}options.callback(null,textStatus);}).always(function(){progress.hide();// remove current request from hash +if(currentRequests[options.url]){delete currentRequests[options.url];}});};exports.getJson=getJson;exports.load=load;},{"./progress":42,"./util":53}],4:[function(require,module,exports){if(window.amazonCheckoutSessionId){window.sessionsResponse=null;const amazonPayNode=document.getElementById('amazonContainerSG');function handleAuthorised(response){document.querySelector('#result').value=JSON.stringify({pspReference:response.fullResponse.pspReference,resultCode:response.fullResponse.resultCode,paymentMethod:response.fullResponse.paymentMethod?response.fullResponse.paymentMethod:response.fullResponse.additionalData.paymentMethod});document.querySelector('#paymentFromComponentStateData').value=JSON.stringify(response);document.querySelector('#showConfirmationForm').submit();}function handleError(){document.querySelector('#result').value=JSON.stringify({error:true});document.querySelector('#paymentFromComponentStateData').value=JSON.stringify({error:true});document.querySelector('#showConfirmationForm').submit();}function handleAmazonResponse(response,component){if(response.fullResponse&&response.fullResponse.action){component.handleAction(response.fullResponse.action);}else if(response.resultCode===window.resultCodeAuthorised){handleAuthorised(response);}else{// first try the amazon decline flow +component.handleDeclineFlow();// if this does not trigger a redirect, try the regular handleError flow +handleError();}}function paymentFromComponent(data,component){$.ajax({url:window.paymentFromComponentURL,type:'post',contentType:'application/; charset=utf-8',data:JSON.stringify(data),success(response){if(response.result&&response.result.orderNo&&response.result.orderToken){document.querySelector('#orderToken').value=response.result.orderToken;document.querySelector('#merchantReference').value=response.result.orderNo;}handleAmazonResponse(response.result,component);}});}const amazonConfig={showOrderButton:false,returnUrl:window.returnURL,configuration:{merchantId:window.amazonMerchantID,storeId:window.amazonStoreID,publicKeyId:window.amazonPublicKeyID},amazonCheckoutSessionId:window.amazonCheckoutSessionId,onSubmit:(state,component)=>{document.querySelector('#adyenStateData').value=JSON.stringify(state.data);paymentFromComponent(state.data,component);},onAdditionalDetails:state=>{state.data.paymentMethod='amazonpay';$.ajax({type:'post',url:window.paymentsDetailsURL,data:JSON.stringify({data:state.data,orderToken:document.querySelector('#orderToken').value}),contentType:'application/; charset=utf-8',success(data){if(data.response.isSuccessful){handleAuthorised(data.response);}else if(!data.response.isFinal&&typeof data.response.action==='object'){checkout.createFromAction(data.action).mount('#amazonContainerSG');}else{handleError();}}});}};async function mountAmazonPayComponent(){const checkout=await AdyenCheckout(window.Configuration);const amazonPayComponent=checkout.create('amazonpay',amazonConfig).mount(amazonPayNode);amazonPayComponent.submit();}mountAmazonPayComponent();}},{}],5:[function(require,module,exports){/** + * (c) 2009-2014 Demandware Inc. + * Subject to standard usage terms and conditions + * For all details and documentation: + * https://bitbucket.com/demandware/sitegenesis + */'use strict';var countries=require('./countries'),dialog=require('./dialog'),minicart=require('./minicart'),page=require('./page'),rating=require('./rating'),searchplaceholder=require('./searchplaceholder'),searchsuggest=require('./searchsuggest'),tooltip=require('./tooltip'),util=require('./util'),validator=require('./validator'),tls=require('./tls'),consentTracking=require('./consentTracking');// if jQuery has not been loaded, load from google cdn +if(!window.jQuery){var s=document.createElement('script');s.setAttribute('src','https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');s.setAttribute('type','text/javascript');document.getElementsByTagName('head')[0].appendChild(s);}require('./jquery-ext')();require('./cookieprivacy')();consentTracking.init();require('./captcha')();function initializeEvents(){var controlKeys=['8','13','46','45','36','35','38','37','40','39'];$('body').on('keydown','textarea[data-character-limit]',function(e){var text=$.trim($(this).val()),charsLimit=$(this).data('character-limit'),charsUsed=text.length;if(charsUsed>=charsLimit&&controlKeys.indexOf(e.which.toString())<0){e.preventDefault();}}).on('change keyup mouseup','textarea[data-character-limit]',function(){var text=$.trim($(this).val()),charsLimit=$(this).data('character-limit'),charsUsed=text.length,charsRemain=charsLimit-charsUsed;if(charsRemain<0){$(this).val(text.slice(0,charsRemain));charsRemain=0;}$(this).next('div.char-count').find('.char-remain-count').html(charsRemain);});/** + * initialize search suggestions, pending the value of the site preference(enhancedSearchSuggestions) + * this will either init the legacy(false) or the beta versions(true) of the the search suggest feature. + * */var $searchContainer=$('#navigation .header-search');searchsuggest.init($searchContainer,Resources.SIMPLE_SEARCH);// add show/hide navigation elements +$('.secondary-navigation .toggle').click(function(){$(this).toggleClass('expanded').next('ul').toggle();});// add generic toggle functionality +$('.toggle').next('.toggle-content').hide();$('.toggle').click(function(){$(this).toggleClass('expanded').next('.toggle-content').toggle();});// subscribe email box +var $subscribeEmail=$('.subscribe-email');if($subscribeEmail.length>0){$subscribeEmail.focus(function(){var val=$(this.val());if(val.length>0&&val!==Resources.SUBSCRIBE_EMAIL_DEFAULT){return;// do not animate when contains non-default value +}$(this).animate({color:'#999999'},500,'linear',function(){$(this).val('').css('color','#333333');});}).blur(function(){var val=$.trim($(this.val()));if(val.length>0){return;// do not animate when contains value +}$(this).val(Resources.SUBSCRIBE_EMAIL_DEFAULT).css('color','#999999').animate({color:'#333333'},500,'linear');});}$('.privacy-policy').on('click',function(e){e.preventDefault();dialog.open({url:$(e.target).attr('href'),options:{height:600}});});$('.consent-tracking-policy').on('click',function(e){e.preventDefault();consentTracking.show();});// main menu toggle +$('.menu-toggle').on('click',function(){$('#wrapper').toggleClass('menu-active');});$('.menu-category li .menu-item-toggle').on('click',function(e){e.preventDefault();var $parentLi=$(e.target).closest('li');$parentLi.siblings('li').removeClass('active').find('.menu-item-toggle').removeClass('fa-chevron-up active').addClass('fa-chevron-right');$parentLi.toggleClass('active');$(e.target).toggleClass('fa-chevron-right fa-chevron-up active');});$('.user-account').on('click',function(e){e.preventDefault();$(this).parent('.user-info').toggleClass('active');});}/** + * @private + * @function + * @description Adds class ('js') to html for css targeting and loads js specific styles. + */function initializeDom(){// add class to html for css targeting +$('html').addClass('js');if(SitePreferences.LISTING_INFINITE_SCROLL){$('html').addClass('infinite-scroll');}// load js specific styles +util.limitCharacters();}var pages={account:require('./pages/account'),cart:require('./pages/cart'),checkout:require('./pages/checkout'),compare:require('./pages/compare'),product:require('./pages/product'),registry:require('./pages/registry'),search:require('./pages/search'),storefront:require('./pages/storefront'),wishlist:require('./pages/wishlist'),storelocator:require('./pages/storelocator')};var app={init:function(){if(document.cookie.length===0){$('
').addClass('browser-compatibility-alert').append($('

').addClass('browser-error').html(Resources.COOKIES_DISABLED)).appendTo('#browser-check');}initializeDom();initializeEvents();// init specific global components +countries.init();tooltip.init();minicart.init();validator.init();rating.init();searchplaceholder.init();// execute page specific initializations +$.extend(page,window.pageContext);var ns=page.ns;if(ns&&pages[ns]&&pages[ns].init){pages[ns].init();}// Check TLS status if indicated by site preference +if(SitePreferences.CHECK_TLS===true){tls.getUserAgent();}}};// general extension functions +(function(){String.format=function(){var s=arguments[0];var i,len=arguments.length-1;for(i=0;i\n';attributes+=''+attr.displayName+': ';attributes+=''+attr.displayValue+'\n';attributes+='';}attributes+='

  • \n';attributes+='Qty: ';attributes+=''+data.qty+'';return['
  • ','','
    '+data.name+'
    ','