Skip to content

Commit

Permalink
AD-292 Implement Payment Optimisation SDK
Browse files Browse the repository at this point in the history
  • Loading branch information
pjaneta committed Aug 28, 2024
1 parent 18f9f47 commit ee1bd62
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
package com.adyen.commerce.controllers.checkout;

import com.adyen.v6.facades.AdyenCheckoutFacade;
import com.adyen.v6.facades.impl.DefaultAdyenCheckoutFacade;
import de.hybris.platform.acceleratorstorefrontcommons.annotations.PreValidateCheckoutStep;
import de.hybris.platform.acceleratorstorefrontcommons.annotations.PreValidateQuoteCheckoutStep;
import de.hybris.platform.acceleratorstorefrontcommons.annotations.RequireHardLogIn;
import de.hybris.platform.acceleratorstorefrontcommons.checkout.steps.CheckoutStep;
import de.hybris.platform.acceleratorstorefrontcommons.constants.WebConstants;
import de.hybris.platform.acceleratorstorefrontcommons.controllers.pages.checkout.steps.AbstractCheckoutStepController;
import de.hybris.platform.acceleratorstorefrontcommons.forms.AddressForm;
import de.hybris.platform.acceleratorstorefrontcommons.util.AddressDataUtil;
import de.hybris.platform.cms2.exceptions.CMSItemNotFoundException;
import de.hybris.platform.cms2.model.pages.ContentPageModel;
import de.hybris.platform.commercefacades.order.data.CartData;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.annotation.Resource;

import static com.adyen.commerce.constants.AdyencheckoutaddonspaWebConstants.ADYEN_CHECKOUT_ORDER_CONFIRMATION;
import static com.adyen.commerce.constants.AdyencheckoutaddonspaWebConstants.ADYEN_CHECKOUT_PAGE_PREFIX;

Expand All @@ -32,6 +32,9 @@ public class AdyenPageCheckoutStepController extends AbstractCheckoutStepControl
public static final String SPA_CHECKOUT_PAGE = "addon:/adyencheckoutaddonspa/pages/adyenSPACheckout";


@Autowired
private AdyenCheckoutFacade adyenCheckoutFacade;

@GetMapping(value = "/adyen/**")
@RequireHardLogIn
@PreValidateQuoteCheckoutStep
Expand Down Expand Up @@ -78,6 +81,7 @@ protected void populateCommonModelAttributes(final Model model, final CartData c
model.addAttribute(SHOW_SAVE_TO_ADDRESS_BOOK_ATTR, Boolean.TRUE);
model.addAttribute(WebConstants.BREADCRUMBS_KEY, getResourceBreadcrumbBuilder().getBreadcrumbs(getBreadcrumbKey()));
model.addAttribute("metaRobots", "noindex,nofollow");
model.addAttribute(DefaultAdyenCheckoutFacade.MODEL_CHECKOUT_SHOPPER_HOST, adyenCheckoutFacade.getCheckoutShopperHost());
if (StringUtils.isNotBlank(addressForm.getCountryIso())) {
model.addAttribute("regions", getI18NFacade().getRegionsForCountryIso(addressForm.getCountryIso()));
model.addAttribute("country", addressForm.getCountryIso());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@

<spring:htmlEscape defaultHtmlEscape="true" />

<script type="text/javascript"
src="https://${checkoutShopperHost}/checkoutshopper/assets/js/datacollection/datacollection.js">
</script>

<template:page pageTitle="${pageTitle}" hideHeaderLinks="true">

<div class="row">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ class Payment extends React.Component<Props, State> {
analytics: {
enabled: false
},
// @ts-ignore
risk: {
enabled: true
},
onPaymentCompleted(data: OnPaymentCompletedData, element?: UIElement) {
console.info(data, element);
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
crossorigin="anonymous">
</script>

<script type="text/javascript"
src="https://${checkoutShopperHost}/checkoutshopper/assets/js/datacollection/datacollection.js">
</script>

<c:if test="${showDefaultCss eq true}">
<link rel="stylesheet" href="https://${checkoutShopperHost}/checkoutshopper/css/chckt-default-v1.css"/>
</c:if>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
return false;
}
AdyenCheckoutHybris.setCustomPaymentMethodValues();
AdyenCheckoutHybris.addRiskData();
$("#adyen-encrypted-form").submit();
});
Expand Down Expand Up @@ -183,6 +184,8 @@
<form:hidden path="sepaOwnerName"/>
<form:hidden path="sepaIbanNumber"/>
<form:hidden path="giftCardBrand"/>
<form:hidden path="riskData"/>


<%-- Billing Information --%>
<div class="headline">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1196,6 +1196,15 @@ var AdyenCheckoutHybris = (function () {
}
console.log('Something went wrong while trying to compute current visible label');
return '';
},

addRiskData: function () {
try {
$('input[name="riskData"]').val(getData());
} catch (e) {
//in case of risk data collection script not enabled
}

}
};
})();
2 changes: 2 additions & 0 deletions adyenv6core/resources/adyenv6core-beans.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
<property name="adyenShopperTelephone" type="java.lang.String"/>
<property name="adyenGiftCardBrand" type="java.lang.String"/>
<property name="adyenAmazonPayConfiguration" type="java.util.Map"/>
<property name="riskData" type="java.lang.String"/>

</bean>

<bean class="de.hybris.platform.commercefacades.order.data.AbstractOrderData">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ public class DefaultAdyenCheckoutFacade implements AdyenCheckoutFacade {
public static final String SESSION_SF_EXPIRY_YEAR = "encryptedExpiryYear";
public static final String SESSION_SF_SECURITY_CODE = "encryptedSecurityCode";
public static final String SESSION_CARD_BRAND = "cardBrand";
public static final String SESSION_ADYEN_RISK_DATA = "adyenRiskData";
public static final String MODEL_SELECTED_PAYMENT_METHOD = "selectedPaymentMethod";
public static final String MODEL_PAYMENT_METHODS = "paymentMethods";
public static final String MODEL_CREDIT_CARD_LABEL = "creditCardLabel";
Expand Down Expand Up @@ -515,6 +516,7 @@ private void updateCartWithSessionData(CartData cartData) {
cartData.setAdyenEncryptedExpiryYear(getSessionService().getAttribute(SESSION_SF_EXPIRY_YEAR));
cartData.setAdyenEncryptedSecurityCode(getSessionService().getAttribute(SESSION_SF_SECURITY_CODE));
cartData.setAdyenCardBrand(getSessionService().getAttribute(SESSION_CARD_BRAND));
cartData.setRiskData(getSessionService().getAttribute(SESSION_ADYEN_RISK_DATA));

getSessionService().removeAttribute(SESSION_CSE_TOKEN);
getSessionService().removeAttribute(SESSION_SF_CARD_NUMBER);
Expand All @@ -523,6 +525,7 @@ private void updateCartWithSessionData(CartData cartData) {
getSessionService().removeAttribute(SESSION_SF_SECURITY_CODE);
getSessionService().removeAttribute(SESSION_CARD_BRAND);
getSessionService().removeAttribute(PAYMENT_METHOD);
getSessionService().removeAttribute(SESSION_ADYEN_RISK_DATA);
}

@Override
Expand Down Expand Up @@ -1358,6 +1361,9 @@ public void handlePaymentForm(AdyenPaymentForm adyenPaymentForm, Errors errors)
if (!StringUtils.isEmpty(adyenPaymentForm.getCardBrand())) {
getSessionService().setAttribute(SESSION_CARD_BRAND, adyenPaymentForm.getCardBrand());
}
if (!StringUtils.isEmpty(adyenPaymentForm.getRiskData())) {
getSessionService().setAttribute(SESSION_ADYEN_RISK_DATA, adyenPaymentForm.getRiskData());
}

//Update CartModel
cartModel.setAdyenDfValue(adyenPaymentForm.getDfValue());
Expand Down
38 changes: 19 additions & 19 deletions adyenv6core/src/com/adyen/v6/factory/AdyenRequestFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,7 @@
package com.adyen.v6.factory;

import com.adyen.builders.terminal.TerminalAPIRequestBuilder;
import com.adyen.model.checkout.Amount;
import com.adyen.model.checkout.ApplicationInfo;
import com.adyen.model.checkout.BillingAddress;
import com.adyen.model.checkout.BrowserInfo;
import com.adyen.model.checkout.CardDetails;
import com.adyen.model.checkout.CheckoutPaymentMethod;
import com.adyen.model.checkout.CommonField;
import com.adyen.model.checkout.DeliveryAddress;
import com.adyen.model.checkout.ExternalPlatform;
import com.adyen.model.checkout.Installments;
import com.adyen.model.checkout.LineItem;
import com.adyen.model.checkout.Name;
import com.adyen.model.checkout.PaymentRequest;
import com.adyen.model.checkout.*;
import com.adyen.model.nexo.AmountsReq;
import com.adyen.model.nexo.DocumentQualifierType;
import com.adyen.model.nexo.MessageCategoryType;
Expand Down Expand Up @@ -62,6 +50,7 @@
import de.hybris.platform.core.model.user.CustomerModel;
import de.hybris.platform.servicelayer.config.ConfigurationService;
import de.hybris.platform.util.TaxValue;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
Expand All @@ -71,12 +60,7 @@
import javax.xml.datatype.XMLGregorianCalendar;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;

import static com.adyen.v6.constants.Adyenv6coreConstants.AFTERPAY;
Expand Down Expand Up @@ -127,6 +111,7 @@ public PaymentRequest createPaymentsRequest(final String merchantAccount,
setCommonInfoOnPaymentRequest(merchantAccount, cartData, requestInfo, customerModel, paymentsRequest);
paymentsRequest.setApplicationInfo(createApplicationInfo());

setRiskData(paymentsRequest, cartData, originPaymentsRequest);

paymentsRequest.setReturnUrl(cartData.getAdyenReturnUrl());
paymentsRequest.setRedirectFromIssuerMethod(RequestMethod.POST.toString());
Expand Down Expand Up @@ -189,6 +174,21 @@ else if (cartData.getAdyenPaymentMethod().indexOf(PAYMENT_METHOD_BOLETO) == 0) {
return paymentsRequest;
}

private void setRiskData(PaymentRequest paymentsRequest, CartData cartData, PaymentRequest originPaymentsRequest) {
// drop-in
if (originPaymentsRequest != null && originPaymentsRequest.getRiskData() != null) {
paymentsRequest.setRiskData(originPaymentsRequest.getRiskData());
return;
}

// components
if (StringUtils.isNotEmpty(cartData.getRiskData())) {
RiskData riskData = new RiskData();
riskData.setClientData(cartData.getRiskData());
paymentsRequest.setRiskData(riskData);
}
}

protected CardDetails getCardDetails(CartData cartData, String selectedReference) {
final CardDetails paymentMethodDetails = new CardDetails();
paymentMethodDetails.encryptedSecurityCode(cartData.getAdyenEncryptedSecurityCode());
Expand Down
11 changes: 11 additions & 0 deletions adyenv6core/src/com/adyen/v6/forms/AdyenPaymentForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ public class AdyenPaymentForm {
private String selectedReference;
private int installments;

private String riskData;

//Save card
private boolean rememberTheseDetails;

Expand Down Expand Up @@ -358,6 +360,14 @@ public void setGiftCardBrand(String giftCardBrand) {
this.giftCardBrand = giftCardBrand;
}

public String getRiskData() {
return riskData;
}

public void setRiskData(String riskData) {
this.riskData = riskData;
}

public void resetFormExceptBillingAddress() {
this.paymentMethod = null;
this.cseToken = null;
Expand Down Expand Up @@ -387,6 +397,7 @@ public void resetFormExceptBillingAddress() {
this.telephoneNumber = null;
this.gender = null;
this.giftCardBrand = null;
this.riskData = null;
}

@Override
Expand Down

0 comments on commit ee1bd62

Please sign in to comment.