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 c21db4b6a..73449dd1e 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 @@ -22,6 +22,7 @@ import java.net.UnknownHostException; import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.Set; import javax.annotation.Resource; @@ -81,7 +82,7 @@ import static com.adyen.v6.constants.Adyenv6coreConstants.RATEPAY; import static com.adyen.v6.constants.Adyenv6coreConstants.PAYMENT_METHOD_MULTIBANCO; import static com.adyen.v6.facades.DefaultAdyenCheckoutFacade.MODEL_CHECKOUT_SHOPPER_HOST; -import static com.adyen.v6.facades.DefaultAdyenCheckoutFacade.MODEL_ORIGIN_KEY; +import static com.adyen.v6.facades.DefaultAdyenCheckoutFacade.MODEL_ENVIRONMENT_MODE; @Controller @RequestMapping(value = AdyenControllerConstants.SUMMARY_CHECKOUT_PREFIX) @@ -92,6 +93,7 @@ public class AdyenSummaryCheckoutStepController extends AbstractCheckoutStepCont private static final String AUTHORISE_3D_SECURE_PAYMENT_URL = "/authorise-3d-adyen-response"; private static final String HPP_RESULT_URL = "/hpp-adyen-response"; private static final String ADYEN_PAYLOAD = "payload"; + private static final String REDIRECT_RESULT = "redirectResult"; @Resource(name = "siteBaseUrlResolutionService") private SiteBaseUrlResolutionService siteBaseUrlResolutionService; @@ -208,20 +210,20 @@ public String placeOrder(@ModelAttribute("placeOrderForm") final PlaceOrderForm errorMessage = getErrorMessageByRefusalReason(paymentsResponse.getRefusalReason()); } if (IDENTIFYSHOPPER == paymentsResponse.getResultCode()) { - if (adyenPaymentMethod.equals(PAYMENT_METHOD_CC)|| adyenPaymentMethod.indexOf(PAYMENT_METHOD_ONECLICK) == 0) { + if (adyenPaymentMethod.equals(PAYMENT_METHOD_CC) || adyenPaymentMethod.indexOf(PAYMENT_METHOD_ONECLICK) == 0) { model.addAttribute(MODEL_CHECKOUT_SHOPPER_HOST, adyenCheckoutFacade.getCheckoutShopperHost()); + model.addAttribute(MODEL_ENVIRONMENT_MODE, adyenCheckoutFacade.getEnvironmentMode()); model.addAttribute(SHOPPER_LOCALE, adyenCheckoutFacade.getShopperLocale()); - model.addAttribute(MODEL_ORIGIN_KEY, adyenCheckoutFacade.getOriginKey()); model.addAttribute(PAYMENT_DATA, paymentsResponse.getPaymentData()); model.addAttribute(FINGERPRINT_TOKEN, paymentsResponse.getAuthentication().get(THREEDS2_FINGERPRINT_TOKEN)); return AdyenControllerConstants.Views.Pages.MultiStepCheckout.Validate3DS2PaymentPage; } } if (CHALLENGESHOPPER == paymentsResponse.getResultCode()) { - if (adyenPaymentMethod.equals(PAYMENT_METHOD_CC)|| adyenPaymentMethod.indexOf(PAYMENT_METHOD_ONECLICK) == 0) { + if (adyenPaymentMethod.equals(PAYMENT_METHOD_CC) || adyenPaymentMethod.indexOf(PAYMENT_METHOD_ONECLICK) == 0) { model.addAttribute(MODEL_CHECKOUT_SHOPPER_HOST, adyenCheckoutFacade.getCheckoutShopperHost()); + model.addAttribute(MODEL_ENVIRONMENT_MODE, adyenCheckoutFacade.getEnvironmentMode()); model.addAttribute(SHOPPER_LOCALE, adyenCheckoutFacade.getShopperLocale()); - model.addAttribute(MODEL_ORIGIN_KEY, adyenCheckoutFacade.getOriginKey()); model.addAttribute(PAYMENT_DATA, paymentsResponse.getPaymentData()); model.addAttribute(CHALLENGE_TOKEN, paymentsResponse.getAuthentication().get(THREEDS2_CHALLENGE_TOKEN)); return AdyenControllerConstants.Views.Pages.MultiStepCheckout.Validate3DS2PaymentPage; @@ -251,8 +253,8 @@ public String authorise3DS2Payment(final Model model, PaymentsResponse paymentsResponse = e.getPaymentsResponse(); if (paymentsResponse != null && paymentsResponse.getResultCode() == CHALLENGESHOPPER) { model.addAttribute(MODEL_CHECKOUT_SHOPPER_HOST, adyenCheckoutFacade.getCheckoutShopperHost()); + model.addAttribute(MODEL_ENVIRONMENT_MODE, adyenCheckoutFacade.getEnvironmentMode()); model.addAttribute(SHOPPER_LOCALE, adyenCheckoutFacade.getShopperLocale()); - model.addAttribute(MODEL_ORIGIN_KEY, adyenCheckoutFacade.getOriginKey()); model.addAttribute(PAYMENT_DATA, paymentsResponse.getPaymentData()); model.addAttribute(CHALLENGE_TOKEN, paymentsResponse.getAuthentication().get("threeds2.challengeToken")); return AdyenControllerConstants.Views.Pages.MultiStepCheckout.Validate3DS2PaymentPage; @@ -264,7 +266,7 @@ public String authorise3DS2Payment(final Model model, LOGGER.debug("Redirecting to summary" + errorMessage); return redirectToSummaryWithError(redirectModel, errorMessage); } - LOGGER.debug("Redirecting to final step of checkout" +errorMessage); + LOGGER.debug("Redirecting to final step of checkout" + errorMessage); return redirectToSummaryWithError(redirectModel, errorMessage); } @@ -298,11 +300,19 @@ public String authorise3DSecurePayment(final Model model, @RequestMapping(value = HPP_RESULT_URL, method = RequestMethod.GET) @RequireHardLogIn public String handleAdyenResponse(final HttpServletRequest request, final RedirectAttributes redirectModel) { - //Compose HPP response data map String payload = request.getParameter(ADYEN_PAYLOAD); + String redirectResult = request.getParameter(REDIRECT_RESULT); + HashMap details = new HashMap<>(); + + if (payload != null && ! payload.isEmpty()) { + details.put(ADYEN_PAYLOAD, payload); + } + if (redirectResult != null && ! redirectResult.isEmpty()) { + details.put(REDIRECT_RESULT, redirectResult); + } try { - PaymentsResponse response = adyenCheckoutFacade.handleRedirectPayload(payload); + PaymentsResponse response = adyenCheckoutFacade.handleRedirectPayload(details); switch (response.getResultCode()) { case AUTHORISED: @@ -352,12 +362,20 @@ private void addMultibancoMessage(RedirectAttributes redirectModel, final String GlobalMessages.addFlashMessage(redirectModel, GlobalMessages.INFO_MESSAGES_HOLDER, - "

Multibanco order summary " + "

" + - "

Amount: " + orderData.getAdyenMultibancoAmount() + "

" - + "

Entity: " + orderData.getAdyenMultibancoEntity() + "

" - + "

Deadline: " + orderData.getAdyenMultibancoDeadline() + "

" - + "

Reference: " + orderData.getAdyenMultibancoReference() + "

" - ); + "

Multibanco order summary " + + "

" + + "

Amount: " + + orderData.getAdyenMultibancoAmount() + + "

" + + "

Entity: " + + orderData.getAdyenMultibancoEntity() + + "

" + + "

Deadline: " + + orderData.getAdyenMultibancoDeadline() + + "

" + + "

Reference: " + + orderData.getAdyenMultibancoReference() + + "

"); } /** diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/checkout/steps/SelectPaymentMethodCheckoutStepController.java b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/checkout/steps/SelectPaymentMethodCheckoutStepController.java index 8243b8d6f..1fc78f169 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/checkout/steps/SelectPaymentMethodCheckoutStepController.java +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/src/com/adyen/v6/controllers/pages/checkout/steps/SelectPaymentMethodCheckoutStepController.java @@ -20,6 +20,7 @@ */ package com.adyen.v6.controllers.pages.checkout.steps; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -27,13 +28,17 @@ import java.util.GregorianCalendar; import java.util.List; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import com.adyen.service.exception.ApiException; import com.adyen.v6.constants.AdyenControllerConstants; import com.adyen.v6.facades.AdyenCheckoutFacade; import com.adyen.v6.forms.AdyenPaymentForm; @@ -44,6 +49,7 @@ import de.hybris.platform.cms2.exceptions.CMSItemNotFoundException; import de.hybris.platform.cms2.model.pages.ContentPageModel; import de.hybris.platform.commercefacades.order.data.CartData; +import static com.adyen.v6.facades.DefaultAdyenCheckoutFacade.MODEL_ORIGIN_KEY; import static de.hybris.platform.acceleratorstorefrontcommons.constants.WebConstants.BREADCRUMBS_KEY; import static org.springframework.web.bind.annotation.RequestMethod.GET; import static org.springframework.web.bind.annotation.RequestMethod.POST; @@ -65,6 +71,9 @@ public class SelectPaymentMethodCheckoutStepController extends AbstractCheckoutS @Resource(name = "adyenCheckoutFacade") private AdyenCheckoutFacade adyenCheckoutFacade; + @Autowired + private HttpServletRequest httpServletRequest; + /** * {@inheritDoc} */ @@ -84,6 +93,14 @@ public String enterStep(final Model model, final RedirectAttributes redirectAttr model.addAttribute(CART_DATA_ATTR, cartData); model.addAttribute("expiryYears", getExpiryYears()); + try { + model.addAttribute(MODEL_ORIGIN_KEY, adyenCheckoutFacade.getOriginKey(httpServletRequest)); + } catch (IOException e) { + LOGGER.error("Exception occurred during getting the origin key" + ExceptionUtils.getStackTrace(e)); + } catch (ApiException e) { + LOGGER.error("Exception occurred during getting origin key" + ExceptionUtils.getStackTrace(e)); + } + adyenCheckoutFacade.initializeCheckoutData(model); super.prepareDataForPage(model); diff --git a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/3ds2_payment.jsp b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/3ds2_payment.jsp index 57b307413..4be001050 100644 --- a/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/3ds2_payment.jsp +++ b/adyenv6b2ccheckoutaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi/3ds2_payment.jsp @@ -3,16 +3,15 @@ - - + + - + - +