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/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/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/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); diff --git a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java index b0aab7019..b0682ea22 100644 --- a/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java +++ b/adyenv6core/src/com/adyen/v6/facades/impl/DefaultAdyenExpressCheckoutFacade.java @@ -24,11 +24,13 @@ 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; 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; @@ -61,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; @@ -71,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); @@ -120,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(); @@ -154,6 +162,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); @@ -302,4 +322,8 @@ public void setCartConverter(Converter cartConverter) { public void setSessionService(SessionService sessionService) { this.sessionService = sessionService; } + + public void setUserService(UserService userService) { + this.userService = userService; + } }