From b6609807d411dfb3aa0bf19b00bf2d140bb6bedd Mon Sep 17 00:00:00 2001 From: PJaneta Date: Fri, 5 Jan 2024 12:37:38 +0100 Subject: [PATCH 1/6] AD-12 Apple pay express delivery method calculation fix --- .../v6/facades/AdyenExpressCheckoutFacade.java | 3 +++ .../impl/DefaultAdyenExpressCheckoutFacade.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/adyenv6core/src/com/adyen/v6/facades/AdyenExpressCheckoutFacade.java b/adyenv6core/src/com/adyen/v6/facades/AdyenExpressCheckoutFacade.java index b3b204800..b86af609b 100644 --- a/adyenv6core/src/com/adyen/v6/facades/AdyenExpressCheckoutFacade.java +++ b/adyenv6core/src/com/adyen/v6/facades/AdyenExpressCheckoutFacade.java @@ -3,6 +3,7 @@ import com.adyen.model.checkout.PaymentsResponse; import de.hybris.platform.commercefacades.user.data.AddressData; import de.hybris.platform.deliveryzone.model.ZoneDeliveryModeValueModel; +import de.hybris.platform.order.exceptions.CalculationException; import javax.servlet.http.HttpServletRequest; import java.util.Optional; @@ -16,4 +17,6 @@ PaymentsResponse expressCartCheckout(AddressData addressData, String merchantId, String applePayToken, HttpServletRequest request) throws Exception; Optional getExpressDeliveryModePrice(); + + void removeDeliveryModeFromSessionCart() throws CalculationException; } diff --git a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java index b0aab7019..8c7f920c1 100644 --- a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java +++ b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java @@ -24,6 +24,7 @@ import de.hybris.platform.deliveryzone.model.ZoneDeliveryModeModel; import de.hybris.platform.deliveryzone.model.ZoneDeliveryModeValueModel; import de.hybris.platform.order.*; +import de.hybris.platform.order.exceptions.CalculationException; import de.hybris.platform.product.ProductService; import de.hybris.platform.servicelayer.dto.converter.Converter; import de.hybris.platform.servicelayer.i18n.CommonI18NService; @@ -154,6 +155,18 @@ public PaymentsResponse expressCartCheckout(AddressData addressData, String merc } } + public void removeDeliveryModeFromSessionCart() throws CalculationException { + if (cartService.hasSessionCart()) { + CartModel sessionCart = cartService.getSessionCart(); + sessionCart.setDeliveryMode(null); + modelService.save(sessionCart); + + CommerceCartParameter commerceCartParameter = new CommerceCartParameter(); + commerceCartParameter.setCart(sessionCart); + commerceCartService.recalculateCart(commerceCartParameter); + } + } + private void prepareCart(CartModel cart, DeliveryModeModel deliveryMode, AddressModel addressModel, PaymentInfoModel paymentInfo) { cart.setDeliveryMode(deliveryMode); cart.setDeliveryAddress(addressModel); From 2c3f406e01b0b2760a2885aaf2d7b9c8ac52b3e8 Mon Sep 17 00:00:00 2001 From: Artur Kaflowski Date: Tue, 9 Jan 2024 12:21:39 +0100 Subject: [PATCH 2/6] AD-12 - Fixing issue with apple pay --- .../pages/AdyenSummaryCheckoutStepController.java | 8 +++++++- .../_ui/responsive/common/js/adyen_express_checkout.js | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) 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 4828cfb6f..1dd5efda0 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 @@ -35,6 +35,7 @@ import de.hybris.platform.acceleratorservices.enums.CheckoutPciOptionEnum; import de.hybris.platform.acceleratorservices.urlresolver.SiteBaseUrlResolutionService; import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpHeaders; import org.json.JSONObject; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -700,7 +701,12 @@ protected String validateOrderFormJson(final PlaceOrderForm placeOrderForm) { return StringUtils.EMPTY; } - + @PostMapping(value = "/component-result-express") + public String handleComponentResultExpress(final RedirectAttributes redirectAttributes, + @RequestHeader(value = HttpHeaders.REFERER, required = false) final String referrer) { + GlobalMessages.addFlashMessage(redirectAttributes, GlobalMessages.ERROR_MESSAGES_HOLDER, CHECKOUT_ERROR_AUTHORIZATION_PAYMENT_ERROR); + return "redirect:" + referrer; + } @PostMapping(value = "/component-result") @RequireHardLogIn public String handleComponentResult(final HttpServletRequest request, diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js index 271d2d910..15e304c66 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js @@ -142,6 +142,7 @@ var AdyenExpressCheckoutHybris = (function() { if (error) { document.querySelector("#resultData").value = data; document.querySelector("#isResultError").value = error; + document.querySelector("#handleComponentResultForm").action += "-express" } else { document.querySelector("#resultData").value = JSON.stringify(data); } From 3f86aa1af9f74f7ed80ad2847fc9861257ad66bb Mon Sep 17 00:00:00 2001 From: Artur Kaflowski Date: Wed, 10 Jan 2024 10:31:35 +0100 Subject: [PATCH 3/6] AD-12 - npe fix --- .../com/adyen/v6/facades/impl/DefaultAdyenCheckoutFacade.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenCheckoutFacade.java b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenCheckoutFacade.java index c10017640..a1dabb265 100644 --- a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenCheckoutFacade.java +++ b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenCheckoutFacade.java @@ -573,6 +573,9 @@ private OrderData createOrderFromPaymentsResponse(final PaymentsResponse payment OrderData orderData = getCheckoutFacade().placeOrder(); + if (orderData == null) { + throw new InvalidCartException("Order does not exist!"); + } OrderModel orderModel = orderRepository.getOrderModel(orderData.getCode()); getAdyenOrderService().updateOrderFromPaymentsResponse(orderModel, paymentsResponse); From a8da1d35866de3d8ad3fa68f5236633b986a7844 Mon Sep 17 00:00:00 2001 From: Artur Kaflowski Date: Wed, 10 Jan 2024 12:58:58 +0100 Subject: [PATCH 4/6] AD-12 - npe fix --- adyenv6core/resources/adyenv6core-spring.xml | 1 + .../impl/DefaultAdyenExpressCheckoutFacade.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/adyenv6core/resources/adyenv6core-spring.xml b/adyenv6core/resources/adyenv6core-spring.xml index ccf23a18a..4e31568c1 100644 --- a/adyenv6core/resources/adyenv6core-spring.xml +++ b/adyenv6core/resources/adyenv6core-spring.xml @@ -511,5 +511,6 @@ + diff --git a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java index 8c7f920c1..f8275c4a0 100644 --- a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java +++ b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java @@ -30,6 +30,7 @@ import de.hybris.platform.servicelayer.i18n.CommonI18NService; import de.hybris.platform.servicelayer.model.ModelService; import de.hybris.platform.servicelayer.session.SessionService; +import de.hybris.platform.servicelayer.user.UserService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.validator.routines.EmailValidator; @@ -62,6 +63,7 @@ public class DefaultAdyenExpressCheckoutFacade implements AdyenExpressCheckoutFa private ZoneDeliveryModeService zoneDeliveryModeService; private AdyenCheckoutFacade adyenCheckoutFacade; private SessionService sessionService; + private UserService userService; private Converter addressReverseConverter; private Converter cartConverter; @@ -72,8 +74,10 @@ public PaymentsResponse expressPDPCheckout(AddressData addressData, String produ if (StringUtils.isEmpty(addressData.getEmail())) { throw new IllegalArgumentException("Empty email address"); } - - CustomerModel user = createGuestCustomer(addressData.getEmail()); + CustomerModel user = (CustomerModel) userService.getCurrentUser(); + if (userService.isAnonymousUser(user)) { + user = createGuestCustomer(addressData.getEmail()); + } CartModel cart = createCartForExpressCheckout(user); @@ -315,4 +319,8 @@ public void setCartConverter(Converter cartConverter) { public void setSessionService(SessionService sessionService) { this.sessionService = sessionService; } + + public void setUserService(UserService userService) { + this.userService = userService; + } } From 8d35533144a5529791f99f775683e73e4005185c Mon Sep 17 00:00:00 2001 From: Artur Kaflowski Date: Wed, 10 Jan 2024 15:37:39 +0100 Subject: [PATCH 5/6] AD-12 - npe fix --- .../v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java index f8275c4a0..b0682ea22 100644 --- a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java +++ b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java @@ -125,8 +125,11 @@ public PaymentsResponse expressPDPCheckout(AddressData addressData, String produ public PaymentsResponse expressCartCheckout(AddressData addressData, String merchantId, String merchantName, String applePayToken, HttpServletRequest request) throws Exception { - CustomerModel user = createGuestCustomer(addressData.getEmail()); - cartService.changeCurrentCartUser(user); + CustomerModel user = (CustomerModel) userService.getCurrentUser(); + if (userService.isAnonymousUser(user)) { + user = createGuestCustomer(addressData.getEmail()); + cartService.changeCurrentCartUser(user); + } CartModel cart = cartService.getSessionCart(); From c0eebb98cc4475e45862b1c4eef8d03fcf5fbea8 Mon Sep 17 00:00:00 2001 From: Artur Kaflowski Date: Thu, 11 Jan 2024 10:53:55 +0100 Subject: [PATCH 6/6] AD-12 - js fix --- .../webroot/_ui/responsive/common/js/adyen_express_checkout.js | 1 - 1 file changed, 1 deletion(-) diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js index 15e304c66..271d2d910 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/_ui/responsive/common/js/adyen_express_checkout.js @@ -142,7 +142,6 @@ var AdyenExpressCheckoutHybris = (function() { if (error) { document.querySelector("#resultData").value = data; document.querySelector("#isResultError").value = error; - document.querySelector("#handleComponentResultForm").action += "-express" } else { document.querySelector("#resultData").value = JSON.stringify(data); }