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