diff --git a/Block/Redirect/Redirect.php b/Block/Redirect/Redirect.php index 6976cc461..a611d4d52 100755 --- a/Block/Redirect/Redirect.php +++ b/Block/Redirect/Redirect.php @@ -297,9 +297,13 @@ public function getFormFields() $formFields['deliveryAddressType'] = "1"; // make setting to make this optional - $adyFields['shopperType'] = "1"; + $formFields['shopperType'] = "1"; } - + + if ($this->_order->getPayment()->getAdditionalInformation("df_value") != "") { + $formFields['dfValue'] = $this->_order->getPayment()->getAdditionalInformation("df_value"); + } + // Sort the array by key using SORT_STRING order ksort($formFields, SORT_STRING); diff --git a/Observer/AdyenHppDataAssignObserver.php b/Observer/AdyenHppDataAssignObserver.php index cfb49386b..9c4c8ab28 100644 --- a/Observer/AdyenHppDataAssignObserver.php +++ b/Observer/AdyenHppDataAssignObserver.php @@ -36,6 +36,7 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver const GENDER = 'gender'; const DOB = 'dob'; const TELEPHONE = 'telephone'; + const DF_VALUE = 'df_value'; /** @@ -46,7 +47,8 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver self::ISSUER_ID, self::GENDER, self::DOB, - self::TELEPHONE + self::TELEPHONE, + self::DF_VALUE ]; /** diff --git a/view/frontend/requirejs-config.js b/view/frontend/requirejs-config.js index 3d1af935c..44719dcab 100755 --- a/view/frontend/requirejs-config.js +++ b/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ /*global alert*/ var config = { paths: { - 'adyen/encrypt' : 'Adyen_Payment/js/view/payment/adyen.encrypt.min' + 'adyen/encrypt' : 'Adyen_Payment/js/view/payment/adyen.encrypt.min', + 'adyen/df' : 'https://live.adyen.com/hpp/js/df' }, config: { mixins: { diff --git a/view/frontend/web/js/view/payment/method-renderer/adyen-hpp-method.js b/view/frontend/web/js/view/payment/method-renderer/adyen-hpp-method.js index a04f7a426..e74b807e8 100755 --- a/view/frontend/web/js/view/payment/method-renderer/adyen-hpp-method.js +++ b/view/frontend/web/js/view/payment/method-renderer/adyen-hpp-method.js @@ -35,12 +35,14 @@ define( 'Magento_Checkout/js/model/url-builder', 'Adyen_Payment/js/model/adyen-payment-service', 'Magento_Customer/js/model/customer', - 'Magento_Checkout/js/model/full-screen-loader' + 'Magento_Checkout/js/model/full-screen-loader', + 'adyen/df' ], - function (ko, $, Component, setPaymentMethodAction, selectPaymentMethodAction, quote, checkoutData, additionalValidators, storage, urlBuilder, adyenPaymentService, customer, fullScreenLoader) { + function (ko, $, Component, setPaymentMethodAction, selectPaymentMethodAction, quote, checkoutData, additionalValidators, storage, urlBuilder, adyenPaymentService, customer, fullScreenLoader, deviceFingerprint) { 'use strict'; var brandCode = ko.observable(null); var paymentMethod = ko.observable(null); + var dfValue = ko.observable(null); return Component.extend({ self: this, @@ -55,7 +57,8 @@ define( 'issuerId', 'gender', 'dob', - 'telephone' + 'telephone', + 'dfValue' ]); return this; }, @@ -89,6 +92,12 @@ define( ).done( function (response) { adyenPaymentService.setPaymentMethods(response); + + // set device fingerprint value + dfSet('dfValue', 0); + // propagate this manually to knockoutjs otherwise it would not work + dfValue($('#dfValue').val()); + fullScreenLoader.stopLoader(); } ).fail(function(error) { @@ -114,7 +123,6 @@ define( return self.validate(); } - if(value.brandCode == "ideal") { result.issuerIds = value.issuers; result.issuerId = ko.observable(null); @@ -155,13 +163,12 @@ define( if (this.validate() && additionalValidators.validate()) { - var data = {}; data.method = self.method; - data.po_number = null; var additionalData = {}; additionalData.brand_code = self.value; + additionalData.df_value = dfValue(); if(brandCode() == "ideal") { additionalData.issuer_id = this.issuerId(); @@ -187,7 +194,7 @@ define( "method": self.method, "po_number": null, "additional_data": { - brand_code: self.value, + brand_code: self.value } }; @@ -205,7 +212,7 @@ define( isBrandCodeChecked: ko.computed(function () { if(!quote.paymentMethod()) { - return null; + return null; } if(quote.paymentMethod().method == paymentMethod()) {