diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 785112211..da9d965ad 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @rkewlani @AlexandrosMor @martinsrenato @Aleffio @rikterbeek +* @rkewlani @martinsrenato @Aleffio @rikterbeek diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/constants/AdyenControllerConstants.java b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/constants/AdyenControllerConstants.java index 85b5289e7..3fa6653f2 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/constants/AdyenControllerConstants.java +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/constants/AdyenControllerConstants.java @@ -25,7 +25,6 @@ public interface AdyenControllerConstants String ADDON_PREFIX = "addon:/adyenv6b2ccheckoutaddon/"; String SELECT_PAYMENT_METHOD_PREFIX = "/checkout/multi/adyen/select-payment-method"; String SUMMARY_CHECKOUT_PREFIX = "/checkout/multi/adyen/summary"; - String PAYPAL_ECS_PREFIX = "/adyen/paypal-ecs"; String COMPONENT_PREFIX = "/adyen/component"; /** diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenPaypalEcsController.java b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenPaypalEcsController.java deleted file mode 100644 index 05ba6f5b2..000000000 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenPaypalEcsController.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * ###### - * ###### - * ############ ####( ###### #####. ###### ############ ############ - * ############# #####( ###### #####. ###### ############# ############# - * ###### #####( ###### #####. ###### ##### ###### ##### ###### - * ###### ###### #####( ###### #####. ###### ##### ##### ##### ###### - * ###### ###### #####( ###### #####. ###### ##### ##### ###### - * ############# ############# ############# ############# ##### ###### - * ############ ############ ############# ############ ##### ###### - * ###### - * ############# - * ############ - * - * Adyen Hybris Extension - * - * Copyright (c) 2017 Adyen B.V. - * This file is open source and available under the MIT license. - * See the LICENSE file for more info. - */ -package com.adyen.v6.controllers.pages; - -import java.security.SignatureException; -import java.util.Map; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; -import com.adyen.constants.HPPConstants; -import com.adyen.v6.constants.AdyenControllerConstants; -import com.adyen.v6.facades.AdyenCheckoutFacade; -import com.adyen.v6.facades.AdyenPaypalFacade; -import de.hybris.platform.acceleratorfacades.flow.CheckoutFlowFacade; -import de.hybris.platform.acceleratorservices.urlresolver.SiteBaseUrlResolutionService; -import de.hybris.platform.acceleratorstorefrontcommons.constants.WebConstants; -import de.hybris.platform.acceleratorstorefrontcommons.controllers.util.GlobalMessages; -import de.hybris.platform.acceleratorstorefrontcommons.security.GUIDCookieStrategy; -import de.hybris.platform.basecommerce.model.site.BaseSiteModel; -import de.hybris.platform.commercefacades.customer.CustomerFacade; -import de.hybris.platform.commercefacades.user.UserFacade; -import de.hybris.platform.commerceservices.customer.DuplicateUidException; -import de.hybris.platform.order.InvalidCartException; -import de.hybris.platform.servicelayer.session.SessionService; -import de.hybris.platform.site.BaseSiteService; -import static com.adyen.constants.HPPConstants.Response.AUTH_RESULT; -import static com.adyen.v6.constants.AdyenControllerConstants.PAYPAL_ECS_PREFIX; -import static com.adyen.v6.facades.AdyenPaypalFacade.PAYPAL_ECS_SHOPPER_EMAIL; -import static com.adyen.v6.facades.AdyenPaypalFacade.PAYPAL_ECS_SHOPPER_FIRST_NAME; -import static com.adyen.v6.facades.AdyenPaypalFacade.PAYPAL_ECS_SHOPPER_LAST_NAME; -import static de.hybris.platform.acceleratorstorefrontcommons.controllers.AbstractController.REDIRECT_PREFIX; - -@Controller -@RequestMapping(PAYPAL_ECS_PREFIX) -public class AdyenPaypalEcsController { - private static final Logger LOG = Logger.getLogger(AdyenPaypalEcsController.class); - private static final String PROCESS_URL = "/process"; - - @Resource(name = "siteBaseUrlResolutionService") - private SiteBaseUrlResolutionService siteBaseUrlResolutionService; - - @Resource(name = "baseSiteService") - private BaseSiteService baseSiteService; - - @Resource(name = "adyenPaypalFacade") - private AdyenPaypalFacade adyenPaypalFacade; - - @Resource(name = "adyenCheckoutFacade") - private AdyenCheckoutFacade adyenCheckoutFacade; - - @Resource(name = "checkoutFlowFacade") - private CheckoutFlowFacade checkoutFlowFacade; - - @Resource(name = "guidCookieStrategy") - private GUIDCookieStrategy guidCookieStrategy; - - @Resource(name = "customerFacade") - private CustomerFacade customerFacade; - - @Resource(name = "sessionService") - private SessionService sessionService; - - @Resource(name = "userFacade") - private UserFacade userFacade; - - @RequestMapping(value = "/initialize", method = RequestMethod.GET) - public String initialize(final Model model, final RedirectAttributes redirectModel, final HttpServletRequest request) { - try { - Map hppFormData = adyenPaypalFacade.initializePaypalECS(getRedirectUrl()); - - //Building HPP data - model.addAttribute("hppUrl", adyenCheckoutFacade.getHppUrl()); - model.addAttribute("hppFormData", hppFormData); - - return AdyenControllerConstants.Views.Pages.MultiStepCheckout.HppPaymentPage; - } catch (SignatureException | InvalidCartException e) { - LOG.error(e); - } - - LOG.debug("Redirecting to cart.."); - GlobalMessages.addFlashMessage(redirectModel, GlobalMessages.ERROR_MESSAGES_HOLDER, "checkout.error.authorization.payment.error"); - return REDIRECT_PREFIX + "/cart"; - } - - @RequestMapping(value = PROCESS_URL) - public String process(final HttpServletRequest request, final HttpServletResponse response, final RedirectAttributes redirectModel) { - try { - //Handle PP ECS response - boolean success = adyenPaypalFacade.handlePaypalECSResponse(request); - - //On success, update user and cart - if (success) { - //If the user is anonymous, convert him to guest - if (userFacade.isAnonymousUser()) { - getCustomerFacade().createGuestUserForAnonymousCheckout(request.getParameter(PAYPAL_ECS_SHOPPER_EMAIL), - request.getParameter(PAYPAL_ECS_SHOPPER_FIRST_NAME) + request.getParameter(PAYPAL_ECS_SHOPPER_LAST_NAME)); - getGuidCookieStrategy().setCookie(request, response); - getSessionService().setAttribute(WebConstants.ANONYMOUS_CHECKOUT, Boolean.TRUE); - } - - //Update the cart - adyenPaypalFacade.updateCart(request, false); - - //Pick the cheapest delivery mode and redirect to the last step of checkout - checkoutFlowFacade.setCheapestDeliveryModeForCheckout(); - - return REDIRECT_PREFIX + "/checkout/multi/adyen/summary/view"; - } - - //In case of error, display the appropriate flash message - switch (request.getParameter(AUTH_RESULT)) { - case HPPConstants.Response.AUTH_RESULT_REFUSED: - GlobalMessages.addFlashMessage(redirectModel, GlobalMessages.ERROR_MESSAGES_HOLDER, "checkout.error.authorization.payment.refused"); - break; - case HPPConstants.Response.AUTH_RESULT_CANCELLED: - GlobalMessages.addFlashMessage(redirectModel, GlobalMessages.ERROR_MESSAGES_HOLDER, "checkout.error.authorization.payment.cancelled"); - break; - case HPPConstants.Response.AUTH_RESULT_ERROR: - default: - GlobalMessages.addFlashMessage(redirectModel, GlobalMessages.ERROR_MESSAGES_HOLDER, "checkout.error.authorization.payment.error"); - break; - } - } catch (SignatureException | InvalidCartException | DuplicateUidException e) { - LOG.warn(e); - GlobalMessages.addFlashMessage(redirectModel, GlobalMessages.ERROR_MESSAGES_HOLDER, "checkout.error.authorization.payment.error"); - } - - LOG.debug("Redirecting to cart.."); - return REDIRECT_PREFIX + "/cart"; - } - - /** - * Construct the URL for PP ECS redirect - */ - private String getRedirectUrl() { - String url = PAYPAL_ECS_PREFIX + PROCESS_URL; - BaseSiteModel currentBaseSite = baseSiteService.getCurrentBaseSite(); - - return siteBaseUrlResolutionService.getWebsiteUrlForSite(currentBaseSite, true, url); - } - - public SiteBaseUrlResolutionService getSiteBaseUrlResolutionService() { - return siteBaseUrlResolutionService; - } - - public void setSiteBaseUrlResolutionService(SiteBaseUrlResolutionService siteBaseUrlResolutionService) { - this.siteBaseUrlResolutionService = siteBaseUrlResolutionService; - } - - public BaseSiteService getBaseSiteService() { - return baseSiteService; - } - - public void setBaseSiteService(BaseSiteService baseSiteService) { - this.baseSiteService = baseSiteService; - } - - public AdyenPaypalFacade getAdyenPaypalFacade() { - return adyenPaypalFacade; - } - - public void setAdyenPaypalFacade(AdyenPaypalFacade adyenPaypalFacade) { - this.adyenPaypalFacade = adyenPaypalFacade; - } - - public AdyenCheckoutFacade getAdyenCheckoutFacade() { - return adyenCheckoutFacade; - } - - public void setAdyenCheckoutFacade(AdyenCheckoutFacade adyenCheckoutFacade) { - this.adyenCheckoutFacade = adyenCheckoutFacade; - } - - public CheckoutFlowFacade getCheckoutFlowFacade() { - return checkoutFlowFacade; - } - - public void setCheckoutFlowFacade(CheckoutFlowFacade checkoutFlowFacade) { - this.checkoutFlowFacade = checkoutFlowFacade; - } - - public GUIDCookieStrategy getGuidCookieStrategy() { - return guidCookieStrategy; - } - - public void setGuidCookieStrategy(GUIDCookieStrategy guidCookieStrategy) { - this.guidCookieStrategy = guidCookieStrategy; - } - - public CustomerFacade getCustomerFacade() { - return customerFacade; - } - - public void setCustomerFacade(CustomerFacade customerFacade) { - this.customerFacade = customerFacade; - } - - public SessionService getSessionService() { - return sessionService; - } - - public void setSessionService(SessionService sessionService) { - this.sessionService = sessionService; - } - - public UserFacade getUserFacade() { - return userFacade; - } - - public void setUserFacade(UserFacade userFacade) { - this.userFacade = userFacade; - } -} diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenSummaryCheckoutStepController.java b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenSummaryCheckoutStepController.java index 96ac8e710..e9ff3b285 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenSummaryCheckoutStepController.java +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/AdyenSummaryCheckoutStepController.java @@ -75,7 +75,6 @@ import static com.adyen.constants.ApiConstants.ThreeDS2Property.FINGERPRINT_TOKEN; import static com.adyen.constants.ApiConstants.ThreeDS2Property.THREEDS2_CHALLENGE_TOKEN; import static com.adyen.constants.ApiConstants.ThreeDS2Property.THREEDS2_FINGERPRINT_TOKEN; -import static com.adyen.constants.BrandCodes.PAYPAL_ECS; import static com.adyen.constants.HPPConstants.Response.SHOPPER_LOCALE; import static com.adyen.model.checkout.PaymentsResponse.ResultCodeEnum.CHALLENGESHOPPER; import static com.adyen.model.checkout.PaymentsResponse.ResultCodeEnum.IDENTIFYSHOPPER; @@ -172,8 +171,7 @@ public String placeOrder(@ModelAttribute("placeOrderForm") final PlaceOrderForm String errorMessage = "checkout.error.authorization.failed"; String adyenPaymentMethod = cartData.getAdyenPaymentMethod(); - - if (canUseAPI(adyenPaymentMethod)) { + if (adyenPaymentMethod.equals(RATEPAY)) { try { OrderData orderData = adyenCheckoutFacade.authorisePayment(request, cartData); LOGGER.debug("Redirecting to confirmation!"); @@ -229,7 +227,7 @@ public String placeOrder(@ModelAttribute("placeOrderForm") final PlaceOrderForm } } else { try { - cartData.setAdyenReturnUrl(getReturnUrl()); + cartData.setAdyenReturnUrl(getReturnUrl(cartData.getAdyenPaymentMethod())); OrderData orderData = adyenCheckoutFacade.authorisePayment(request, cartData); //In case of Boleto, show link to pdf if (PAYMENT_METHOD_BOLETO.equals(cartData.getAdyenPaymentMethod())) { @@ -244,15 +242,11 @@ public String placeOrder(@ModelAttribute("placeOrderForm") final PlaceOrderForm LOGGER.debug("Handling AdyenNonAuthorizedPaymentException. Checking PaymentResponse."); PaymentsResponse paymentsResponse = e.getPaymentsResponse(); if (REDIRECTSHOPPER == paymentsResponse.getResultCode()) { - LOGGER.debug("PaymentResponse resultCode is REDIRECTSHOPPER, redirecting shopper to 3DS flow"); if (is3DSPaymentMethod(adyenPaymentMethod)) { - final String termUrl = getTermUrl(); - model.addAttribute("paReq", paymentsResponse.getRedirect().getData().get(PAREQ)); - model.addAttribute("md", paymentsResponse.getRedirect().getData().get(MD)); - model.addAttribute("issuerUrl", paymentsResponse.getRedirect().getUrl()); - model.addAttribute("termUrl", termUrl); - return AdyenControllerConstants.Views.Pages.MultiStepCheckout.Validate3DSecurePaymentPage; + LOGGER.debug("PaymentResponse resultCode is REDIRECTSHOPPER, redirecting shopper to 3DS flow"); + return redirectTo3DSValidation(model, paymentsResponse); } + LOGGER.debug("PaymentResponse resultCode is REDIRECTSHOPPER, redirecting shopper to local payment method page"); return REDIRECT_PREFIX + paymentsResponse.getRedirect().getUrl(); } if (REFUSED == paymentsResponse.getResultCode()) { @@ -286,13 +280,19 @@ public String authorise3DS2Payment(final Model model, } catch (AdyenNonAuthorizedPaymentException e) { LOGGER.debug("Handling AdyenNonAuthorizedPaymentException. Checking PaymentResponse."); PaymentsResponse paymentsResponse = e.getPaymentsResponse(); - if (paymentsResponse != null && (paymentsResponse.getResultCode() == CHALLENGESHOPPER || paymentsResponse.getResultCode() == IDENTIFYSHOPPER)) { - LOGGER.debug("PaymentResponse is "+paymentsResponse.getResultCode()+", redirecting to 3DS2 flow"); - return redirectTo3DS2Validation(model, paymentsResponse); - } - if (paymentsResponse != null && paymentsResponse.getResultCode() == PaymentsResponse.ResultCodeEnum.REFUSED) { - errorMessage = getErrorMessageByRefusalReason(paymentsResponse.getRefusalReason()); - LOGGER.debug("PaymentResponse is REFUSED: " + errorMessage); + if(paymentsResponse != null) { + if (paymentsResponse.getResultCode() == CHALLENGESHOPPER || paymentsResponse.getResultCode() == IDENTIFYSHOPPER) { + LOGGER.debug("PaymentResponse is " + paymentsResponse.getResultCode() + ", redirecting to 3DS2 flow"); + return redirectTo3DS2Validation(model, paymentsResponse); + } + if (paymentsResponse.getResultCode() == REDIRECTSHOPPER) { + LOGGER.debug("PaymentResponse is " + paymentsResponse.getResultCode() + ", redirecting to 3DS flow"); + return redirectTo3DSValidation(model, paymentsResponse); + } + if (paymentsResponse.getResultCode() == PaymentsResponse.ResultCodeEnum.REFUSED) { + errorMessage = getErrorMessageByRefusalReason(paymentsResponse.getRefusalReason()); + LOGGER.debug("PaymentResponse is REFUSED: " + errorMessage); + } } return redirectToSelectPaymentMethodWithError(redirectModel, errorMessage); } catch (CalculationException | InvalidCartException e) { @@ -305,7 +305,7 @@ public String authorise3DS2Payment(final Model model, return REDIRECT_PREFIX + "/cart"; } - @RequestMapping(value = AUTHORISE_3D_SECURE_PAYMENT_URL, method = RequestMethod.POST) + @RequestMapping(value = AUTHORISE_3D_SECURE_PAYMENT_URL, method = RequestMethod.GET) @RequireHardLogIn public String authorise3DSecurePayment(final RedirectAttributes redirectModel, final HttpServletRequest request) { @@ -417,20 +417,7 @@ private void addMultibancoMessage(RedirectAttributes redirectModel, final String + "

"); } - /** - * Methods supported via API - * Credit Cards/OneClick - * OpenInvoice - * Boleto - */ - private boolean canUseAPI(String paymentMethod) { - Set apiPaymentMethods = new HashSet<>(); - - apiPaymentMethods.add(PAYPAL_ECS); - apiPaymentMethods.add(RATEPAY); - return apiPaymentMethods.contains(paymentMethod); - } private boolean is3DSPaymentMethod(String adyenPaymentMethod) { return adyenPaymentMethod.equals(PAYMENT_METHOD_CC) || adyenPaymentMethod.indexOf(PAYMENT_METHOD_ONECLICK) == 0; @@ -443,6 +430,16 @@ private String redirectToSelectPaymentMethodWithError(final RedirectAttributes r return REDIRECT_PREFIX + AdyenControllerConstants.SELECT_PAYMENT_METHOD_PREFIX; } + private String redirectTo3DSValidation(Model model, PaymentsResponse paymentsResponse) { + if (paymentsResponse.getRedirect() != null && paymentsResponse.getRedirect().getData() != null) { + model.addAttribute("termUrl", paymentsResponse.getRedirect().getData().get("TermUrl")); + model.addAttribute("paReq", paymentsResponse.getRedirect().getData().get(PAREQ)); + model.addAttribute("md", paymentsResponse.getRedirect().getData().get(MD)); + model.addAttribute("issuerUrl", paymentsResponse.getRedirect().getUrl()); + } + return AdyenControllerConstants.Views.Pages.MultiStepCheckout.Validate3DSecurePaymentPage; + } + private String redirectTo3DS2Validation(Model model, PaymentsResponse paymentsResponse) { model.addAttribute(MODEL_CHECKOUT_SHOPPER_HOST, adyenCheckoutFacade.getCheckoutShopperHost()); model.addAttribute(MODEL_ENVIRONMENT_MODE, adyenCheckoutFacade.getEnvironmentMode()); @@ -456,18 +453,13 @@ private String redirectTo3DS2Validation(Model model, PaymentsResponse paymentsRe return AdyenControllerConstants.Views.Pages.MultiStepCheckout.Validate3DS2PaymentPage; } - private String getTermUrl() { - String authorise3DSecureUrl = AdyenControllerConstants.SUMMARY_CHECKOUT_PREFIX + AUTHORISE_3D_SECURE_PAYMENT_URL; - BaseSiteModel currentBaseSite = baseSiteService.getCurrentBaseSite(); - - return siteBaseUrlResolutionService.getWebsiteUrlForSite(currentBaseSite, true, authorise3DSecureUrl); - } - - /** - * Construct the URL for HPP redirect - */ - private String getReturnUrl() { - String url = AdyenControllerConstants.SUMMARY_CHECKOUT_PREFIX + HPP_RESULT_URL; + private String getReturnUrl(String adyenPaymentMethod) { + String url; + if (is3DSPaymentMethod(adyenPaymentMethod)) { + url = AdyenControllerConstants.SUMMARY_CHECKOUT_PREFIX + AUTHORISE_3D_SECURE_PAYMENT_URL; + } else { + url = AdyenControllerConstants.SUMMARY_CHECKOUT_PREFIX + HPP_RESULT_URL; + } BaseSiteModel currentBaseSite = baseSiteService.getCurrentBaseSite(); return siteBaseUrlResolutionService.getWebsiteUrlForSite(currentBaseSite, true, url); diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base.properties b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base.properties index 19a1ac90a..79f85ae35 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base.properties +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base.properties @@ -18,3 +18,18 @@ text.account.storedCards=Stored Cards text.account.storedCard.delete.popup.title=Remove card text.account.storedCard.delete.error=An error occurred while removing the card text.account.storedCard.delete.success=The card has been removed + +payment.method.billing.information=Billing Information +payment.method.payment.information=Payment Information +payment.method.cards.combo=Select credit or debit card +payment.method.cards.credit=Credit +payment.method.cards.debit=Debit +payment.method.date.of.birth=Date of birth +payment.method.social.security.number=Social security number (CPF/CNPJ) +payment.method.personal.number=Personal number (last 4 digits) +payment.method.first.name=First name +payment.method.last.name=Last name +payment.method.issuer.selector=Please select issuer +payment.method.terminal.selector=Select your terminal + +checkout.summary.spinner.message=Please wait while your payment is processed. Do not click back or refresh the page. diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base_en.properties b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base_en.properties new file mode 100644 index 000000000..79f85ae35 --- /dev/null +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/messages/base_en.properties @@ -0,0 +1,35 @@ + +checkout.error.authorization.transaction.not.permitted=The transaction is not permitted. +checkout.error.authorization.cvc.declined=The payment is REFUSED. Please check your Card details. +checkout.error.authorization.restricted.card=The card is restricted. +checkout.error.authorization.payment.detail.not.found=The payment is REFUSED because the saved card is removed. Please try an other payment method. +checkout.error.authorization.payment.refused=The payment is REFUSED. +checkout.error.authorization.payment.cancelled=The payment is Cancelled. +checkout.error.authorization.payment.error=An error occurred. +checkout.error.authorization.pos.configuration=Error reaching POS terminal. Check the terminal connection/configuration and try again. +checkout.error.authorization.pos.busy=The terminal is busy. Wait for the current transaction to end and try again later. +checkout.error.authorization.pos.pin=The payment is REFUSED. Please check your Card details. +checkout.error.billing.address=Some fields were not filled in correctly. Please check if your details are correct + +text.account.storedCards.empty=There are no stored cards +text.account.storedCard.delete=Remove +text.account.storedCard.delete.following=Remove the following card +text.account.storedCards=Stored Cards +text.account.storedCard.delete.popup.title=Remove card +text.account.storedCard.delete.error=An error occurred while removing the card +text.account.storedCard.delete.success=The card has been removed + +payment.method.billing.information=Billing Information +payment.method.payment.information=Payment Information +payment.method.cards.combo=Select credit or debit card +payment.method.cards.credit=Credit +payment.method.cards.debit=Debit +payment.method.date.of.birth=Date of birth +payment.method.social.security.number=Social security number (CPF/CNPJ) +payment.method.personal.number=Personal number (last 4 digits) +payment.method.first.name=First name +payment.method.last.name=Last name +payment.method.issuer.selector=Please select issuer +payment.method.terminal.selector=Select your terminal + +checkout.summary.spinner.message=Please wait while your payment is processed. Do not click back or refresh the page. diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/tags/responsive/alternativeMethod.tag b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/tags/responsive/alternativeMethod.tag index fbaac46ff..ce1bbb62b 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/tags/responsive/alternativeMethod.tag +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/tags/responsive/alternativeMethod.tag @@ -30,6 +30,7 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="adyen" tagdir="/WEB-INF/tags/addons/adyenv6b2ccheckoutaddon/responsive" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
@@ -45,7 +46,9 @@