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;
}