From e59263553533d51a5a71e6c4ce697e46c9a60c56 Mon Sep 17 00:00:00 2001 From: PJaneta Date: Fri, 10 May 2024 15:36:15 +0200 Subject: [PATCH] AD-244 Develop OCC Endpoint for Retrieving Adyen Payment Methods --- adyenocc/extensioninfo.xml | 3 +- .../commerce/constants/AdyenoccConstants.java | 2 ++ .../controllers/AdyenoccController.java | 21 ----------- .../controllers/PaymentMethodsController.java | 36 +++++++++++++++++++ .../AdyenOCCControllerException.java | 4 +++ .../AdyenOCCControllerExceptionHandler.java | 15 ++++++++ .../multi/selectPaymentMethodPage.jsp | 2 +- .../com/adyen/v6/dto/CheckoutConfigDTO.java | 6 ++-- .../v6/dto/CheckoutConfigDTOBuilder.java | 5 +-- 9 files changed, 66 insertions(+), 28 deletions(-) delete mode 100644 adyenocc/src/com/adyen/commerce/controllers/AdyenoccController.java create mode 100644 adyenocc/src/com/adyen/commerce/controllers/PaymentMethodsController.java create mode 100644 adyenocc/src/com/adyen/commerce/exception/AdyenOCCControllerException.java create mode 100644 adyenocc/src/com/adyen/commerce/exceptionhandler/AdyenOCCControllerExceptionHandler.java diff --git a/adyenocc/extensioninfo.xml b/adyenocc/extensioninfo.xml index 0d320b668..d3fb52ea3 100644 --- a/adyenocc/extensioninfo.xml +++ b/adyenocc/extensioninfo.xml @@ -11,7 +11,8 @@ - + + diff --git a/adyenocc/src/com/adyen/commerce/constants/AdyenoccConstants.java b/adyenocc/src/com/adyen/commerce/constants/AdyenoccConstants.java index 397c41f73..324445b54 100644 --- a/adyenocc/src/com/adyen/commerce/constants/AdyenoccConstants.java +++ b/adyenocc/src/com/adyen/commerce/constants/AdyenoccConstants.java @@ -6,6 +6,8 @@ public class AdyenoccConstants extends GeneratedAdyenoccConstants { public static final String EXTENSIONNAME = "adyenocc"; + public static final String ADYEN_USER_CART_PREFIX = "/{baseSiteId}/users/{userId}/carts/{cartId}/adyen"; + public static final String ADYEN_USER_PREFIX = "/{baseSiteId}/users/{userId}/adyen"; private AdyenoccConstants() { diff --git a/adyenocc/src/com/adyen/commerce/controllers/AdyenoccController.java b/adyenocc/src/com/adyen/commerce/controllers/AdyenoccController.java deleted file mode 100644 index 5479ff64b..000000000 --- a/adyenocc/src/com/adyen/commerce/controllers/AdyenoccController.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. - */ -package com.adyen.commerce.controllers; - -import de.hybris.platform.webservicescommons.swagger.ApiBaseSiteIdParam; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping(value = "/{baseSiteId}/test") -public class AdyenoccController -{ - @GetMapping - @ApiBaseSiteIdParam - public String getNewResource() - { - return "newSampleResource"; - } -} diff --git a/adyenocc/src/com/adyen/commerce/controllers/PaymentMethodsController.java b/adyenocc/src/com/adyen/commerce/controllers/PaymentMethodsController.java new file mode 100644 index 000000000..b44d974ae --- /dev/null +++ b/adyenocc/src/com/adyen/commerce/controllers/PaymentMethodsController.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. + */ +package com.adyen.commerce.controllers; + +import com.adyen.commerce.constants.AdyenoccConstants; +import com.adyen.service.exception.ApiException; +import com.adyen.v6.dto.CheckoutConfigDTO; +import com.adyen.v6.facades.AdyenCheckoutFacade; +import de.hybris.platform.commerceservices.request.mapping.annotation.ApiVersion; +import de.hybris.platform.webservicescommons.swagger.ApiBaseSiteIdUserIdAndCartIdParam; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping(value = AdyenoccConstants.ADYEN_USER_CART_PREFIX) +@ApiVersion("v2") +@Tag(name = "Adyen") +public class PaymentMethodsController +{ + @Autowired + private AdyenCheckoutFacade adyenCheckoutFacade; + + @GetMapping(value = "/checkout-configuration") + @Operation(operationId = "getCheckoutConfiguration", summary = "Get checkout configuration", description = + "Returns configuration for Adyen dropin component") + @ApiBaseSiteIdUserIdAndCartIdParam + public ResponseEntity getCheckoutConfiguration() throws ApiException { + return ResponseEntity.ok().body(adyenCheckoutFacade.getReactCheckoutConfig()); + } +} diff --git a/adyenocc/src/com/adyen/commerce/exception/AdyenOCCControllerException.java b/adyenocc/src/com/adyen/commerce/exception/AdyenOCCControllerException.java new file mode 100644 index 000000000..bbd7e63a4 --- /dev/null +++ b/adyenocc/src/com/adyen/commerce/exception/AdyenOCCControllerException.java @@ -0,0 +1,4 @@ +package com.adyen.commerce.exception; + +public class AdyenOCCControllerException extends RuntimeException { +} diff --git a/adyenocc/src/com/adyen/commerce/exceptionhandler/AdyenOCCControllerExceptionHandler.java b/adyenocc/src/com/adyen/commerce/exceptionhandler/AdyenOCCControllerExceptionHandler.java new file mode 100644 index 000000000..1a16f6daf --- /dev/null +++ b/adyenocc/src/com/adyen/commerce/exceptionhandler/AdyenOCCControllerExceptionHandler.java @@ -0,0 +1,15 @@ +package com.adyen.commerce.exceptionhandler; + +import com.adyen.commerce.exception.AdyenOCCControllerException; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice +public class AdyenOCCControllerExceptionHandler { + + @ExceptionHandler(value = AdyenOCCControllerException.class) + public ResponseEntity handleAdyenControllerException(AdyenOCCControllerException exception) { + return ResponseEntity.badRequest().build(); + } +} \ No newline at end of file diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/selectPaymentMethodPage.jsp b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/selectPaymentMethodPage.jsp index 14e1f7dd2..8025ed05a 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/selectPaymentMethodPage.jsp +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/selectPaymentMethodPage.jsp @@ -26,7 +26,7 @@ //Set the allowed cards const allowedCards = []; - allowedCards.push("${allowedCard.code}"); + allowedCards.push("${allowedCard}"); const initConfig = { diff --git a/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTO.java b/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTO.java index 6c7b0620c..852d013b6 100644 --- a/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTO.java +++ b/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTO.java @@ -20,7 +20,7 @@ public class CheckoutConfigDTO { @Deprecated private String creditCardLabel; @Deprecated - private List allowedCards; + private List allowedCards; private Amount amount; private String adyenClientKey; private String adyenPaypalMerchantId; @@ -82,11 +82,11 @@ public void setCreditCardLabel(String creditCardLabel) { this.creditCardLabel = creditCardLabel; } - public List getAllowedCards() { + public List getAllowedCards() { return allowedCards; } - public void setAllowedCards(List allowedCards) { + public void setAllowedCards(List allowedCards) { this.allowedCards = allowedCards; } diff --git a/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTOBuilder.java b/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTOBuilder.java index 35211bdc8..a6fe1710d 100644 --- a/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTOBuilder.java +++ b/adyenv6core/src/com/adyen/v6/dto/CheckoutConfigDTOBuilder.java @@ -14,7 +14,7 @@ public class CheckoutConfigDTOBuilder { private final CheckoutConfigDTO checkoutConfigDTO; - public CheckoutConfigDTOBuilder(){ + public CheckoutConfigDTOBuilder() { checkoutConfigDTO = new CheckoutConfigDTO(); } @@ -49,7 +49,8 @@ public CheckoutConfigDTOBuilder setCreditCardLabel(String creditCardLabel) { } public CheckoutConfigDTOBuilder setAllowedCards(List allowedCards) { - checkoutConfigDTO.setAllowedCards(allowedCards); + List mappedAllowedCards = allowedCards.stream().map(AdyenCardTypeEnum::toString).toList(); + checkoutConfigDTO.setAllowedCards(mappedAllowedCards); return this; }