Skip to content

Commit

Permalink
Merge pull request #235 from Adyen/PW-3785
Browse files Browse the repository at this point in the history
PW-3785 Added AfterPay support in Hybris
  • Loading branch information
saquibsayyad authored Feb 11, 2021
2 parents 4d4fdb2 + 3aa4d20 commit 371ecb6
Show file tree
Hide file tree
Showing 10 changed files with 117 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@
name="lastName"
value="${cartData.deliveryAddress.lastName}">
</c:if>

<c:if test="${brandCode eq 'afterpay_default'}">
<div id="afterpay-container"></div>
</c:if>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@
AdyenCheckoutHybris.initiateEps( ${issuerLists['eps']} );
</c:if>
<c:forEach var="paymentMethod" items="${paymentMethods}">
<c:if test="${paymentMethod.type eq 'afterpay_default'}">
AdyenCheckoutHybris.initiateAfterPay("${countryCode}");
</c:if>
</c:forEach>
<c:forEach items="${storedCards}" var="storedCard">
var storedCardJS =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ var AdyenCheckoutHybris = (function () {
oneClickCards: {},
selectedCardBrand: null,
sepaDirectDebit:null,
afterPay: null,

convertCardBrand: function () {
var cardBrand = this.selectedCardBrand;
Expand Down Expand Up @@ -120,6 +121,18 @@ var AdyenCheckoutHybris = (function () {
}
}

if (paymentMethod === "afterpay_default") {
if (!this.afterPay.state.isValid) {
window.alert("Please fill all the details");
this.afterPay.showValidation();
return false;
}
var dob = $("input[name=dateOfBirth]").val();
if ( dob ) {
$( "#dob" ).val( dob );
}
}

return true;
},

Expand Down Expand Up @@ -157,9 +170,9 @@ var AdyenCheckoutHybris = (function () {
*/
setCustomPaymentMethodValues: function () {
var paymentMethod = $( 'input[type=radio][name=paymentMethod]:checked' ).val();
var dob = $( '#p_method_adyen_hpp_' + paymentMethod + '_dob' );
var dob = $( '#p_method_adyen_hpp_' + paymentMethod + '_dob' ).val();
if ( dob ) {
$( "#dob" ).val( dob.val() );
$( "#dob" ).val( dob );
}

var ssn = $( '#p_method_adyen_hpp_' + paymentMethod + '_ssn' );
Expand Down Expand Up @@ -427,6 +440,23 @@ var AdyenCheckoutHybris = (function () {
}
},

initiateAfterPay: function (countryCode) {
this.afterPay = this.checkout.create("afterpay_default", {
countryCode: countryCode,
visibility: { // Optional configuration
personalDetails: "editable",
billingAddress: "hidden",
deliveryAddress: "hidden"
}
});

try {
this.afterPay.mount('#afterpay-container');
} catch (e) {
console.log('Something went wrong trying to mount the afterpay component: ' + e);
}
},

configureButton: function (form, useSpinner, label) {
$(document).ready(function () {
$("#placeOrder-" + label).click(function () {
Expand Down
3 changes: 3 additions & 0 deletions adyenv6core/resources/adyenv6core-beans.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
<property name="adyenBillingAddress" type="de.hybris.platform.commercefacades.user.data.AddressData"/>
<property name="adyenApplePayMerchantName" type="java.lang.String"/>
<property name="adyenApplePayMerchantIdentifier" type="java.lang.String"/>
<property name="adyenShopperGender" type="java.lang.String"/>
<property name="adyenShopperEmail" type="java.lang.String"/>
<property name="adyenShopperTelephone" type="java.lang.String"/>
</bean>

<bean class="de.hybris.platform.commercefacades.order.data.AbstractOrderData">
Expand Down
12 changes: 12 additions & 0 deletions adyenv6core/resources/adyenv6core-items.xml
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,18 @@
<description>Shopper's date of birth</description>
<persistence type="property"/>
</attribute>
<attribute qualifier="adyenShopperEmail" type="java.lang.String">
<description>Shopper's email address</description>
<persistence type="property"/>
</attribute>
<attribute qualifier="adyenShopperGender" type="java.lang.String">
<description>Shopper's gender</description>
<persistence type="property"/>
</attribute>
<attribute qualifier="adyenTelephone" type="java.lang.String">
<description>Shopper's telephone number</description>
<persistence type="property"/>
</attribute>
<attribute qualifier="adyenSocialSecurityNumber" type="java.lang.String">
<description>Shopper's social security number (applicable for openinvoice methods)</description>
<persistence type="property"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ private Adyenv6coreConstants() {
add(KLARNA_SLICE);
add(AFFIRM);
add(CLEARPAY);
// add(AFTERPAY); // not supported yet
add(AFTERPAY);
}});


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,7 @@ public void initializeCheckoutData(Model model) {
model.addAttribute(MODEL_AMOUNT, amount);
model.addAttribute(MODEL_IMMEDIATE_CAPTURE, isImmediateCapture());
model.addAttribute(MODEL_PAYPAL_MERCHANT_ID, baseStore.getAdyenPaypalMerchantId());
model.addAttribute(MODEL_COUNTRY_CODE, cartData.getDeliveryAddress().getCountry().getIsocode());

modelService.save(cartModel);
}
Expand Down Expand Up @@ -1095,6 +1096,11 @@ public PaymentInfoModel createPaymentInfo(final CartModel cartModel, AdyenPaymen
paymentInfo.setAdyenSepaOwnerName(adyenPaymentForm.getSepaOwnerName());
paymentInfo.setAdyenSepaIbanNumber(adyenPaymentForm.getSepaIbanNumber());

// AfterPay fields
paymentInfo.setAdyenTelephone(adyenPaymentForm.getTelephoneNumber());
paymentInfo.setAdyenShopperEmail(adyenPaymentForm.getShopperEmail());
paymentInfo.setAdyenShopperGender(adyenPaymentForm.getGender());

// Boleto fields
paymentInfo.setAdyenFirstName(adyenPaymentForm.getFirstName());
paymentInfo.setAdyenLastName(adyenPaymentForm.getLastName());
Expand Down
15 changes: 15 additions & 0 deletions adyenv6core/src/com/adyen/v6/factory/AdyenRequestFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
import java.util.HashMap;
import java.util.List;

import static com.adyen.v6.constants.Adyenv6coreConstants.AFTERPAY;
import static com.adyen.v6.constants.Adyenv6coreConstants.CARD_TYPE_DEBIT;
import static com.adyen.v6.constants.Adyenv6coreConstants.ISSUER_PAYMENT_METHODS;
import static com.adyen.v6.constants.Adyenv6coreConstants.KLARNA;
Expand Down Expand Up @@ -830,6 +831,12 @@ public void setOpenInvoiceData(PaymentsRequest paymentsRequest, CartData cartDat
paymentsRequest.setDeviceFingerprint(cartData.getAdyenDfValue());
}

if (AFTERPAY.equals(cartData.getAdyenPaymentMethod())) {
paymentsRequest.setShopperEmail(cartData.getAdyenShopperEmail());
paymentsRequest.setTelephoneNumber(cartData.getAdyenShopperTelephone());
paymentsRequest.setShopperName(getAfterPayShopperName(cartData));
}

// set the invoice lines
List<LineItem> invoiceLines = new ArrayList<>();
String currency = cartData.getTotalPrice().getCurrencyIso();
Expand Down Expand Up @@ -904,6 +911,14 @@ public void setOpenInvoiceData(PaymentsRequest paymentsRequest, CartData cartDat
paymentsRequest.setLineItems(invoiceLines);
}

private Name getAfterPayShopperName(CartData cartData) {
Name name = new Name();
name.setFirstName(cartData.getAdyenFirstName());
name.setLastName(cartData.getAdyenLastName());
name.gender(Name.GenderEnum.valueOf(cartData.getAdyenShopperGender()));
return name;
}

/**
* Set Boleto payment request data
*/
Expand Down
35 changes: 35 additions & 0 deletions adyenv6core/src/com/adyen/v6/forms/AdyenPaymentForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ public class AdyenPaymentForm {
//POS
private String terminalId;

// AfterPay fields
private String gender;
private String telephoneNumber;
private String shopperEmail;

//Billing address related fields
private boolean useAdyenDeliveryAddress;
private AddressForm billingAddress;
Expand Down Expand Up @@ -305,6 +310,30 @@ public boolean usesComponent() {
return PAYMENT_METHOD_PAYPAL.equals(paymentMethod);
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public String getTelephoneNumber() {
return telephoneNumber;
}

public void setTelephoneNumber(String telephoneNumber) {
this.telephoneNumber = telephoneNumber;
}

public String getShopperEmail() {
return shopperEmail;
}

public void setShopperEmail(String shopperEmail) {
this.shopperEmail = shopperEmail;
}

public void resetFormExceptBillingAddress() {
this.paymentMethod = null;
this.cseToken = null;
Expand All @@ -330,6 +359,9 @@ public void resetFormExceptBillingAddress() {
this.sepaIbanNumber = null;
this.sepaOwnerName = null;
this.billingAddress = billingAddress;
this.shopperEmail = null;
this.telephoneNumber = null;
this.gender = null;
}

@Override
Expand All @@ -351,6 +383,9 @@ public String toString() {
sb.append(" rememberTheseDetails: ").append(Util.toIndentedString(rememberTheseDetails)).append("\n");
sb.append(" selectedReference: ").append(Util.toIndentedString(selectedReference)).append("\n");
sb.append(" dateOfBirth: ").append(Util.toIndentedString(dob)).append("\n");
sb.append(" shopperEmail: ").append(Util.toIndentedString(shopperEmail)).append("\n");
sb.append(" telephoneNumber: ").append(Util.toIndentedString(telephoneNumber)).append("\n");
sb.append(" gender: ").append(Util.toIndentedString(gender)).append("\n");
sb.append(" socialSecurityNumber: ").append(Util.toIndentedString(socialSecurityNumber)).append("\n");
sb.append(" firstName: ").append(Util.toIndentedString(firstName)).append("\n");
sb.append(" lastName: ").append(Util.toIndentedString(lastName)).append("\n");
Expand Down
3 changes: 3 additions & 0 deletions adyenv6core/src/com/adyen/v6/populator/CartPopulator.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ public void populate(final CartModel source, final CartData target) throws Conve
target.setAdyenSepaIbanNumber(paymentInfo.getAdyenSepaIbanNumber());
target.setAdyenApplePayMerchantName(paymentInfo.getAdyenApplePayMerchantName());
target.setAdyenApplePayMerchantIdentifier(paymentInfo.getAdyenApplePayMerchantIdentifier());
target.setAdyenShopperGender(paymentInfo.getAdyenShopperGender());
target.setAdyenShopperEmail(paymentInfo.getAdyenShopperEmail());
target.setAdyenShopperTelephone(paymentInfo.getAdyenTelephone());
}
}

Expand Down

0 comments on commit 371ecb6

Please sign in to comment.