We will be off from 27/1 (Monday) to 31/1 (Friday) (GMT +7) for our Tet Holiday (Lunar New Year) in our country

Commit 3b5965f5 authored by Bas Maassen's avatar Bas Maassen Committed by GitHub

Merge pull request #209 from Adyen/PW-304

PW-304 Inserted Personal number for Nordic countries
parents 98dbe562 59ddfa00
...@@ -84,7 +84,8 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -84,7 +84,8 @@ class Redirect extends \Magento\Payment\Block\Form
\Adyen\Payment\Logger\AdyenLogger $adyenLogger, \Adyen\Payment\Logger\AdyenLogger $adyenLogger,
\Magento\Tax\Model\Config $taxConfig, \Magento\Tax\Model\Config $taxConfig,
\Magento\Tax\Model\Calculation $taxCalculation \Magento\Tax\Model\Calculation $taxCalculation
) { )
{
$this->_orderFactory = $orderFactory; $this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession; $this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data); parent::__construct($context, $data);
...@@ -127,11 +128,12 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -127,11 +128,12 @@ class Redirect extends \Magento\Payment\Block\Form
} else { } else {
if ($this->getPaymentMethodSelectionOnAdyen()) { if ($this->getPaymentMethodSelectionOnAdyen()) {
$url = 'https://test.adyen.com/hpp/select.shtml'; $url = 'https://test.adyen.com/hpp/select.shtml';
} else { } else {
if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod( if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod(
$this->_order->getPayment()->getAdditionalInformation('brand_code') $this->_order->getPayment()->getAdditionalInformation('brand_code')
)) { )
) {
$url = "https://test.adyen.com/hpp/skipDetails.shtml"; $url = "https://test.adyen.com/hpp/skipDetails.shtml";
} else { } else {
$url = "https://test.adyen.com/hpp/details.shtml"; $url = "https://test.adyen.com/hpp/details.shtml";
...@@ -144,11 +146,12 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -144,11 +146,12 @@ class Redirect extends \Magento\Payment\Block\Form
$url = 'https://live.adyen.com/hpp/pay.shtml'; $url = 'https://live.adyen.com/hpp/pay.shtml';
} else { } else {
if ($this->getPaymentMethodSelectionOnAdyen()) { if ($this->getPaymentMethodSelectionOnAdyen()) {
$url = 'https://live.adyen.com/hpp/select.shtml'; $url = 'https://live.adyen.com/hpp/select.shtml';
} else { } else {
if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod( if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod(
$this->_order->getPayment()->getAdditionalInformation('brand_code') $this->_order->getPayment()->getAdditionalInformation('brand_code')
)) { )
) {
$url = "https://live.adyen.com/hpp/skipDetails.shtml"; $url = "https://live.adyen.com/hpp/skipDetails.shtml";
} else { } else {
$url = "https://live.adyen.com/hpp/details.shtml"; $url = "https://live.adyen.com/hpp/details.shtml";
...@@ -158,7 +161,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -158,7 +161,7 @@ class Redirect extends \Magento\Payment\Block\Form
break; break;
} }
} }
} catch(Exception $e) { } catch (Exception $e) {
// do nothing for now // do nothing for now
throw($e); throw($e);
} }
...@@ -183,56 +186,57 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -183,56 +186,57 @@ class Redirect extends \Magento\Payment\Block\Form
try { try {
if ($this->_order->getPayment()) { if ($this->_order->getPayment()) {
$realOrderId = $this->_order->getRealOrderId(); $realOrderId = $this->_order->getRealOrderId();
$orderCurrencyCode = $this->_order->getOrderCurrencyCode(); $orderCurrencyCode = $this->_order->getOrderCurrencyCode();
$skinCode = trim($this->_adyenHelper->getAdyenHppConfigData('skin_code')); $skinCode = trim($this->_adyenHelper->getAdyenHppConfigData('skin_code'));
$amount = $this->_adyenHelper->formatAmount( $amount = $this->_adyenHelper->formatAmount(
$this->_order->getGrandTotal(), $orderCurrencyCode $this->_order->getGrandTotal(), $orderCurrencyCode
); );
$merchantAccount = trim($this->_adyenHelper->getAdyenAbstractConfigData('merchant_account')); $merchantAccount = trim($this->_adyenHelper->getAdyenAbstractConfigData('merchant_account'));
$shopperEmail = $this->_order->getCustomerEmail(); $shopperEmail = $this->_order->getCustomerEmail();
$customerId = $this->_order->getCustomerId(); $customerId = $this->_order->getCustomerId();
$shopperIP = $this->_order->getRemoteIp(); $shopperIP = $this->_order->getRemoteIp();
$browserInfo = $_SERVER['HTTP_USER_AGENT']; $browserInfo = $_SERVER['HTTP_USER_AGENT'];
$deliveryDays = $this->_adyenHelper->getAdyenHppConfigData('delivery_days'); $deliveryDays = $this->_adyenHelper->getAdyenHppConfigData('delivery_days');
$shopperLocale = trim($this->_adyenHelper->getAdyenHppConfigData('shopper_locale')); $shopperLocale = trim($this->_adyenHelper->getAdyenHppConfigData('shopper_locale'));
$shopperLocale = (!empty($shopperLocale)) ? $shopperLocale : $this->_resolver->getLocale(); $shopperLocale = (!empty($shopperLocale)) ? $shopperLocale : $this->_resolver->getLocale();
$countryCode = trim($this->_adyenHelper->getAdyenHppConfigData('country_code')); $countryCode = trim($this->_adyenHelper->getAdyenHppConfigData('country_code'));
$countryCode = (!empty($countryCode)) ? $countryCode : false; $countryCode = (!empty($countryCode)) ? $countryCode : false;
// if directory lookup is enabled use the billingaddress as countrycode // if directory lookup is enabled use the billingaddress as countrycode
if ($countryCode == false) { if ($countryCode == false) {
if ($this->_order->getBillingAddress() && if ($this->_order->getBillingAddress() &&
$this->_order->getBillingAddress()->getCountryId() != "") { $this->_order->getBillingAddress()->getCountryId() != ""
) {
$countryCode = $this->_order->getBillingAddress()->getCountryId(); $countryCode = $this->_order->getBillingAddress()->getCountryId();
} }
} }
$formFields = []; $formFields = [];
$formFields['merchantAccount'] = $merchantAccount; $formFields['merchantAccount'] = $merchantAccount;
$formFields['merchantReference'] = $realOrderId; $formFields['merchantReference'] = $realOrderId;
$formFields['paymentAmount'] = (int)$amount; $formFields['paymentAmount'] = (int)$amount;
$formFields['currencyCode'] = $orderCurrencyCode; $formFields['currencyCode'] = $orderCurrencyCode;
$formFields['shipBeforeDate'] = date( $formFields['shipBeforeDate'] = date(
"Y-m-d", "Y-m-d",
mktime(date("H"), date("i"), date("s"), date("m"), date("j") + $deliveryDays, date("Y")) mktime(date("H"), date("i"), date("s"), date("m"), date("j") + $deliveryDays, date("Y"))
); );
$formFields['skinCode'] = $skinCode; $formFields['skinCode'] = $skinCode;
$formFields['shopperLocale'] = $shopperLocale; $formFields['shopperLocale'] = $shopperLocale;
$formFields['countryCode'] = $countryCode; $formFields['countryCode'] = $countryCode;
$formFields['shopperIP'] = $shopperIP; $formFields['shopperIP'] = $shopperIP;
$formFields['browserInfo'] = $browserInfo; $formFields['browserInfo'] = $browserInfo;
$formFields['sessionValidity'] = date( $formFields['sessionValidity'] = date(
DATE_ATOM, DATE_ATOM,
mktime(date("H") + 1, date("i"), date("s"), date("m"), date("j"), date("Y")) mktime(date("H") + 1, date("i"), date("s"), date("m"), date("j"), date("Y"))
); );
$formFields['shopperEmail'] = $shopperEmail; $formFields['shopperEmail'] = $shopperEmail;
// recurring // recurring
$recurringType = trim($this->_adyenHelper->getAdyenAbstractConfigData( $recurringType = trim($this->_adyenHelper->getAdyenAbstractConfigData(
'recurring_type') 'recurring_type')
); );
$brandCode = $this->_order->getPayment()->getAdditionalInformation( $brandCode = $this->_order->getPayment()->getAdditionalInformation(
\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE \Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE
); );
...@@ -243,30 +247,30 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -243,30 +247,30 @@ class Redirect extends \Magento\Payment\Block\Form
if ($customerId > 0) { if ($customerId > 0) {
$formFields['recurringContract'] = $recurringType; $formFields['recurringContract'] = $recurringType;
$formFields['shopperReference'] = $customerId; $formFields['shopperReference'] = $customerId;
} else { } else {
// required for openinvoice payment methods use unique id // required for openinvoice payment methods use unique id
$uniqueReference = "guest_" . $realOrderId . "_" . $this->_order->getStoreId(); $uniqueReference = "guest_" . $realOrderId . "_" . $this->_order->getStoreId();
$formFields['shopperReference'] = $uniqueReference; $formFields['shopperReference'] = $uniqueReference;
} }
//blocked methods //blocked methods
$formFields['blockedMethods'] = ""; $formFields['blockedMethods'] = "";
$baseUrl = $this->_storeManager->getStore($this->getStore()) $baseUrl = $this->_storeManager->getStore($this->getStore())
->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_LINK); ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_LINK);
$formFields['resURL'] = $baseUrl . 'adyen/process/result'; $formFields['resURL'] = $baseUrl . 'adyen/process/result';
$hmacKey = $this->_adyenHelper->getHmac(); $hmacKey = $this->_adyenHelper->getHmac();
if ($brandCode) { if ($brandCode) {
$formFields['brandCode'] = $brandCode; $formFields['brandCode'] = $brandCode;
} }
$issuerId = $this->_order->getPayment()->getAdditionalInformation("issuer_id"); $issuerId = $this->_order->getPayment()->getAdditionalInformation("issuer_id");
if ($issuerId) { if ($issuerId) {
$formFields['issuerId'] = $issuerId; $formFields['issuerId'] = $issuerId;
} }
$formFields = $this->setBillingAddressData($formFields); $formFields = $this->setBillingAddressData($formFields);
...@@ -274,8 +278,6 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -274,8 +278,6 @@ class Redirect extends \Magento\Payment\Block\Form
$formFields = $this->setOpenInvoiceData($formFields); $formFields = $this->setOpenInvoiceData($formFields);
$formFields['shopper.gender'] = $this->getGenderText($this->_order->getCustomerGender()); $formFields['shopper.gender'] = $this->getGenderText($this->_order->getCustomerGender());
$dob = $this->_order->getCustomerDob(); $dob = $this->_order->getCustomerDob();
if ($dob) { if ($dob) {
$formFields['shopper.dateOfBirthDayOfMonth'] = trim($this->_getDate($dob, 'd')); $formFields['shopper.dateOfBirthDayOfMonth'] = trim($this->_getDate($dob, 'd'));
...@@ -285,15 +287,19 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -285,15 +287,19 @@ class Redirect extends \Magento\Payment\Block\Form
// For klarna acceptPrivacyPolicy to skip HPP page // For klarna acceptPrivacyPolicy to skip HPP page
if ($brandCode == "klarna") { if ($brandCode == "klarna") {
$ssn = $this->_order->getPayment()->getAdditionalInformation('ssn');
if (!empty($ssn)) {
$formFields['shopper.socialSecurityNumber'] = $ssn;
}
// // needed for DE and AT // // needed for DE and AT
$formFields['klarna.acceptPrivacyPolicy'] = 'true'; $formFields['klarna.acceptPrivacyPolicy'] = 'true';
} }
// OpenInvoice don't allow to edit billing and delivery items // OpenInvoice don't allow to edit billing and delivery items
if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod($brandCode)) { if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod($brandCode)) {
// don't allow editable shipping/delivery address // don't allow editable shipping/delivery address
$formFields['billingAddressType'] = "1"; $formFields['billingAddressType'] = "1";
$formFields['deliveryAddressType'] = "1"; $formFields['deliveryAddressType'] = "1";
// make setting to make this optional // make setting to make this optional
...@@ -313,18 +319,14 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -313,18 +319,14 @@ class Redirect extends \Magento\Payment\Block\Form
$merchantSig = base64_encode(hash_hmac('sha256', $signData, pack("H*", $hmacKey), true)); $merchantSig = base64_encode(hash_hmac('sha256', $signData, pack("H*", $hmacKey), true));
$formFields['merchantSig'] = $merchantSig; $formFields['merchantSig'] = $merchantSig;
$this->_adyenLogger->addAdyenDebug(print_r($formFields, true)); $this->_adyenLogger->addAdyenDebug(print_r($formFields, true));
} }
} catch(Exception $e) { } catch (Exception $e) {
// do nothing for now // do nothing for now
} }
// echo "GENDER" . $this->_order->getCustomerGender();
//
// print_r($formFields);die();
return $formFields; return $formFields;
} }
...@@ -336,9 +338,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -336,9 +338,7 @@ class Redirect extends \Magento\Payment\Block\Form
protected function setBillingAddressData($formFields) protected function setBillingAddressData($formFields)
{ {
$billingAddress = $this->_order->getBillingAddress(); $billingAddress = $this->_order->getBillingAddress();
if ($billingAddress) { if ($billingAddress) {
$formFields['shopper.firstName'] = trim($billingAddress->getFirstname()); $formFields['shopper.firstName'] = trim($billingAddress->getFirstname());
$middleName = trim($billingAddress->getMiddlename()); $middleName = trim($billingAddress->getMiddlename());
if ($middleName != "") { if ($middleName != "") {
...@@ -347,7 +347,6 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -347,7 +347,6 @@ class Redirect extends \Magento\Payment\Block\Form
$formFields['shopper.lastName'] = trim($billingAddress->getLastname()); $formFields['shopper.lastName'] = trim($billingAddress->getLastname());
$formFields['shopper.telephoneNumber'] = trim($billingAddress->getTelephone()); $formFields['shopper.telephoneNumber'] = trim($billingAddress->getTelephone());
$street = $this->_adyenHelper->getStreet($billingAddress); $street = $this->_adyenHelper->getStreet($billingAddress);
if (isset($street['name']) && $street['name'] != "") { if (isset($street['name']) && $street['name'] != "") {
...@@ -458,7 +457,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -458,7 +457,7 @@ class Redirect extends \Magento\Payment\Block\Form
$this->_adyenHelper->formatAmount( $this->_adyenHelper->formatAmount(
$item->getPriceInclTax(), $item->getPriceInclTax(),
$currency $currency
) - $this->_adyenHelper->formatAmount( ) - $this->_adyenHelper->formatAmount(
$item->getPrice(), $item->getPrice(),
$currency $currency
) : $this->_adyenHelper->formatAmount($item->getTaxAmount(), $currency); ) : $this->_adyenHelper->formatAmount($item->getTaxAmount(), $currency);
...@@ -467,7 +466,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -467,7 +466,7 @@ class Redirect extends \Magento\Payment\Block\Form
// Calculate vat percentage // Calculate vat percentage
$itemVatPercentage = $this->_adyenHelper->getMinorUnitTaxPercent($item->getTaxPercent()); $itemVatPercentage = $this->_adyenHelper->getMinorUnitTaxPercent($item->getTaxPercent());
$numberOfItems = (int) $item->getQtyOrdered(); $numberOfItems = (int)$item->getQtyOrdered();
$formFields = $this->setOpenInvoiceLineData($formFields, $count, $currency, $description, $itemAmount, $formFields = $this->setOpenInvoiceLineData($formFields, $count, $currency, $description, $itemAmount,
$itemVatAmount, $itemVatPercentage, $numberOfItems); $itemVatAmount, $itemVatPercentage, $numberOfItems);
...@@ -515,7 +514,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -515,7 +514,7 @@ class Redirect extends \Magento\Payment\Block\Form
$itemVatAmount, $itemVatPercentage, $numberOfItems); $itemVatAmount, $itemVatPercentage, $numberOfItems);
} }
$formFields['openinvoicedata.refundDescription'] = "Refund / Correction for ".$formFields['merchantReference']; $formFields['openinvoicedata.refundDescription'] = "Refund / Correction for " . $formFields['merchantReference'];
$formFields['openinvoicedata.numberOfLines'] = $count; $formFields['openinvoicedata.numberOfLines'] = $count;
return $formFields; return $formFields;
...@@ -534,9 +533,10 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -534,9 +533,10 @@ class Redirect extends \Magento\Payment\Block\Form
* @param $numberOfItems * @param $numberOfItems
*/ */
protected function setOpenInvoiceLineData($formFields, $count, $currencyCode, $description, $itemAmount, protected function setOpenInvoiceLineData($formFields, $count, $currencyCode, $description, $itemAmount,
$itemVatAmount, $itemVatPercentage, $numberOfItems $itemVatAmount, $itemVatPercentage, $numberOfItems
) { )
$linename = "line".$count; {
$linename = "line" . $count;
$formFields['openinvoicedata.' . $linename . '.currencyCode'] = $currencyCode; $formFields['openinvoicedata.' . $linename . '.currencyCode'] = $currencyCode;
$formFields['openinvoicedata.' . $linename . '.description'] = $description; $formFields['openinvoicedata.' . $linename . '.description'] = $description;
$formFields['openinvoicedata.' . $linename . '.itemAmount'] = $itemAmount; $formFields['openinvoicedata.' . $linename . '.itemAmount'] = $itemAmount;
...@@ -545,7 +545,8 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -545,7 +545,8 @@ class Redirect extends \Magento\Payment\Block\Form
$formFields['openinvoicedata.' . $linename . '.numberOfItems'] = $numberOfItems; $formFields['openinvoicedata.' . $linename . '.numberOfItems'] = $numberOfItems;
if ($this->_adyenHelper->isVatCategoryHigh($this->_order->getPayment()->getAdditionalInformation( if ($this->_adyenHelper->isVatCategoryHigh($this->_order->getPayment()->getAdditionalInformation(
\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE))) { \Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE))
) {
$formFields['openinvoicedata.' . $linename . '.vatCategory'] = "High"; $formFields['openinvoicedata.' . $linename . '.vatCategory'] = "High";
} else { } else {
$formFields['openinvoicedata.' . $linename . '.vatCategory'] = "None"; $formFields['openinvoicedata.' . $linename . '.vatCategory'] = "None";
......
...@@ -81,7 +81,8 @@ class AdyenHppConfigProvider implements ConfigProviderInterface ...@@ -81,7 +81,8 @@ class AdyenHppConfigProvider implements ConfigProviderInterface
\Magento\Framework\UrlInterface $urlBuilder, \Magento\Framework\UrlInterface $urlBuilder,
\Magento\Customer\Model\Session $customerSession, \Magento\Customer\Model\Session $customerSession,
\Magento\Checkout\Model\Session $session \Magento\Checkout\Model\Session $session
) { )
{
$this->_paymentHelper = $paymentHelper; $this->_paymentHelper = $paymentHelper;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
$this->_request = $request; $this->_request = $request;
...@@ -123,7 +124,7 @@ class AdyenHppConfigProvider implements ConfigProviderInterface ...@@ -123,7 +124,7 @@ class AdyenHppConfigProvider implements ConfigProviderInterface
$gender = ""; $gender = "";
$dob = ""; $dob = "";
} }
// add to config // add to config
$config['payment'] ['adyenHpp']['gender'] = $gender; $config['payment'] ['adyenHpp']['gender'] = $gender;
$config['payment'] ['adyenHpp']['dob'] = $dob; $config['payment'] ['adyenHpp']['dob'] = $dob;
...@@ -137,12 +138,12 @@ class AdyenHppConfigProvider implements ConfigProviderInterface ...@@ -137,12 +138,12 @@ class AdyenHppConfigProvider implements ConfigProviderInterface
$config['payment'] ['adyenHpp']['isPaymentMethodSelectionOnAdyen'] = $paymentMethodSelectionOnAdyen; $config['payment'] ['adyenHpp']['isPaymentMethodSelectionOnAdyen'] = $paymentMethodSelectionOnAdyen;
$config['payment'] ['adyenHpp']['showGender'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_gender'); $config['payment'] ['adyenHpp']['showGender'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_gender');
$config['payment'] ['adyenHpp']['showDob'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_dob'); $config['payment'] ['adyenHpp']['showDob'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_dob');
$config['payment'] ['adyenHpp']['showTelephone'] = $this->_adyenHelper->getAdyenHppConfigDataFlag( $config['payment'] ['adyenHpp']['showTelephone'] = $this->_adyenHelper->getAdyenHppConfigDataFlag(
'show_telephone' 'show_telephone'
); );
$config['payment'] ['adyenHpp']['ratePayId'] = $this->_adyenHelper->getRatePayId(); $config['payment'] ['adyenHpp']['ratePayId'] = $this->_adyenHelper->getRatePayId();
$config['payment'] ['adyenHpp']['deviceIdentToken'] = md5($this->_session->getQuoteId().date('c')); $config['payment'] ['adyenHpp']['deviceIdentToken'] = md5($this->_session->getQuoteId() . date('c'));
$config['payment'] ['adyenHpp']['nordicCountries'] = ['SE', 'NO', 'DK', 'FI'];
return $config; return $config;
} }
......
...@@ -37,6 +37,7 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver ...@@ -37,6 +37,7 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver
const DOB = 'dob'; const DOB = 'dob';
const TELEPHONE = 'telephone'; const TELEPHONE = 'telephone';
const DF_VALUE = 'df_value'; const DF_VALUE = 'df_value';
const SSN = 'ssn';
/** /**
...@@ -48,7 +49,8 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver ...@@ -48,7 +49,8 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver
self::GENDER, self::GENDER,
self::DOB, self::DOB,
self::TELEPHONE, self::TELEPHONE,
self::DF_VALUE self::DF_VALUE,
self::SSN
]; ];
/** /**
......
...@@ -74,7 +74,7 @@ define( ...@@ -74,7 +74,7 @@ define(
// retrieve payment methods // retrieve payment methods
var serviceUrl, var serviceUrl,
payload; payload;
if(customer.isLoggedIn()) { if (customer.isLoggedIn()) {
serviceUrl = urlBuilder.createUrl('/carts/mine/retrieve-adyen-payment-methods', {}); serviceUrl = urlBuilder.createUrl('/carts/mine/retrieve-adyen-payment-methods', {});
} else { } else {
serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/retrieve-adyen-payment-methods', { serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/retrieve-adyen-payment-methods', {
...@@ -92,7 +92,7 @@ define( ...@@ -92,7 +92,7 @@ define(
).done( ).done(
function (response) { function (response) {
adyenPaymentService.setPaymentMethods(response); adyenPaymentService.setPaymentMethods(response);
if(JSON.stringify(response).indexOf("ratepay") > -1) { if (JSON.stringify(response).indexOf("ratepay") > -1) {
var ratePayId = window.checkoutConfig.payment.adyenHpp.ratePayId; var ratePayId = window.checkoutConfig.payment.adyenHpp.ratePayId;
window.di = {t: '', v: ratePayId, l: 'Checkout'}; window.di = {t: '', v: ratePayId, l: 'Checkout'};
function waitForDfValue() { function waitForDfValue() {
...@@ -116,50 +116,81 @@ define( ...@@ -116,50 +116,81 @@ define(
fullScreenLoader.stopLoader(); fullScreenLoader.stopLoader();
} }
).fail(function(error) { ).fail(function (error) {
console.log(JSON.stringify(error)); console.log(JSON.stringify(error));
fullScreenLoader.stopLoader(); fullScreenLoader.stopLoader();
}); });
}, },
getAdyenHppPaymentMethods: function() { getAdyenHppPaymentMethods: function () {
var self = this; var self = this;
var paymentMethods = adyenPaymentService.getAvailablePaymentMethods(); var paymentMethods = adyenPaymentService.getAvailablePaymentMethods();
var paymentList = _.map(paymentMethods, function(value) { var paymentList = _.map(paymentMethods, function (value) {
var result = {}; var result = {};
result.value = value.brandCode; result.value = value.brandCode;
result.name = value; result.name = value;
result.method = self.item.method; result.method = self.item.method;
result.getCode = function() { result.getCode = function () {
return self.item.method; return self.item.method;
}; };
result.validate = function () { result.validate = function () {
return self.validate(); return self.validate();
} }
result.isPaymentMethodOpenInvoiceMethod = function () {
if(value.brandCode == "ideal") { return value.isPaymentMethodOpenInvoiceMethod;
}
result.getSsnLength = function () {
if (quote.billingAddress().countryId == "NO") {
//5 digits for Norway
return 5;
}
else {
//4 digits for other Nordic countries
return 4;
}
}
if (value.brandCode == "ideal") {
result.issuerIds = value.issuers; result.issuerIds = value.issuers;
result.issuerId = ko.observable(null); result.issuerId = ko.observable(null);
} else if(value.isPaymentMethodOpenInvoiceMethod) { } else if (value.isPaymentMethodOpenInvoiceMethod) {
result.telephone = ko.observable(quote.shippingAddress().telephone); result.telephone = ko.observable(quote.shippingAddress().telephone);
result.gender = ko.observable(window.checkoutConfig.payment.adyenHpp.gender); result.gender = ko.observable(window.checkoutConfig.payment.adyenHpp.gender);
result.dob = ko.observable(window.checkoutConfig.payment.adyenHpp.dob); result.dob = ko.observable(window.checkoutConfig.payment.adyenHpp.dob);
result.datepickerValue = ko.observable(); // needed ?? result.datepickerValue = ko.observable(); // needed ??
} result.ssn = ko.observable();
result.isPaymentMethodOpenInvoiceMethod = function() {
return value.isPaymentMethodOpenInvoiceMethod; result.getRatePayDeviceIdentToken = function () {
} return window.checkoutConfig.payment.adyenHpp.deviceIdentToken;
result.getRatePayDeviceIdentToken = function() { }
return window.checkoutConfig.payment.adyenHpp.deviceIdentToken; result.showGender = function () {
return window.checkoutConfig.payment.adyenHpp.showGender;
}
result.showDob = function () {
return window.checkoutConfig.payment.adyenHpp.showDob;
}
result.showTelephone = function () {
return window.checkoutConfig.payment.adyenHpp.showTelephone;
}
result.showSsn = function () {
if (value.brandCode.indexOf("klarna") >= 0) {
var ba = quote.billingAddress();
if (ba != null) {
var nordicCountriesList = window.checkoutConfig.payment.adyenHpp.nordicCountries;
if (nordicCountriesList.indexOf(ba.countryId) >= 0) {
return true;
}
}
}
return false;
}
} }
return result; return result;
}); });
return paymentList; return paymentList;
}, },
getGenderTypes: function() { getGenderTypes: function () {
// return window.checkoutConfig.payment.adyenHpp.genderTypes; return _.map(window.checkoutConfig.payment.adyenHpp.genderTypes, function (value, key) {
return _.map(window.checkoutConfig.payment.adyenHpp.genderTypes, function(value, key) {
return { return {
'key': key, 'key': key,
'value': value 'value': value
...@@ -175,7 +206,7 @@ define( ...@@ -175,7 +206,7 @@ define(
return false; return false;
} }
}, },
continueToAdyenBrandCode: function() { continueToAdyenBrandCode: function () {
// set payment method to adyen_hpp // set payment method to adyen_hpp
var self = this; var self = this;
...@@ -188,13 +219,14 @@ define( ...@@ -188,13 +219,14 @@ define(
additionalData.brand_code = self.value; additionalData.brand_code = self.value;
additionalData.df_value = dfValue(); additionalData.df_value = dfValue();
if(brandCode() == "ideal") { if (brandCode() == "ideal") {
additionalData.issuer_id = this.issuerId(); additionalData.issuer_id = this.issuerId();
} else if(self.isPaymentMethodOpenInvoiceMethod()) { } else if (self.isPaymentMethodOpenInvoiceMethod()) {
additionalData.gender = this.gender(); additionalData.gender = this.gender();
additionalData.dob = this.dob(); additionalData.dob = this.dob();
additionalData.telephone = this.telephone(); additionalData.telephone = this.telephone();
if(brandCode() == "ratepay"){ additionalData.ssn = this.ssn();
if (brandCode() == "ratepay") {
additionalData.df_value = this.getRatePayDeviceIdentToken(); additionalData.df_value = this.getRatePayDeviceIdentToken();
} }
} }
...@@ -207,11 +239,11 @@ define( ...@@ -207,11 +239,11 @@ define(
return false; return false;
}, },
selectPaymentMethodBrandCode: function() { selectPaymentMethodBrandCode: function () {
var self = this; var self = this;
// set payment method to adyen_hpp // set payment method to adyen_hpp
var data = { var data = {
"method": self.method, "method": self.method,
"po_number": null, "po_number": null,
"additional_data": { "additional_data": {
...@@ -232,34 +264,25 @@ define( ...@@ -232,34 +264,25 @@ define(
}, },
isBrandCodeChecked: ko.computed(function () { isBrandCodeChecked: ko.computed(function () {
if(!quote.paymentMethod()) { if (!quote.paymentMethod()) {
return null; return null;
} }
if(quote.paymentMethod().method == paymentMethod()) { if (quote.paymentMethod().method == paymentMethod()) {
return brandCode(); return brandCode();
} }
return null; return null;
}), }),
isPaymentMethodSelectionOnAdyen: function() { isPaymentMethodSelectionOnAdyen: function () {
return window.checkoutConfig.payment.adyenHpp.isPaymentMethodSelectionOnAdyen; return window.checkoutConfig.payment.adyenHpp.isPaymentMethodSelectionOnAdyen;
}, },
isIconEnabled: function() { isIconEnabled: function () {
return window.checkoutConfig.payment.adyen.showLogo; return window.checkoutConfig.payment.adyen.showLogo;
}, },
showGender: function() {
return window.checkoutConfig.payment.adyenHpp.showGender;
},
showDob: function() {
return window.checkoutConfig.payment.adyenHpp.showDob;
},
showTelephone: function() {
return window.checkoutConfig.payment.adyenHpp.showTelephone;
},
validate: function () { validate: function () {
return true; return true;
}, },
getRatePayDeviceIdentToken: function(){ getRatePayDeviceIdentToken: function () {
return window.checkoutConfig.payment.adyenHpp.deviceIdentToken; return window.checkoutConfig.payment.adyenHpp.deviceIdentToken;
} }
}); });
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
<!-- ko if: isPaymentMethodOpenInvoiceMethod() --> <!-- ko if: isPaymentMethodOpenInvoiceMethod() -->
<!-- ko if: $parent.showGender() --> <!-- ko if: showGender() -->
<div class="field gender_type type required"> <div class="field gender_type type required">
<label data-bind="attr: {for: getCode() + '_gender_type'}" class="label"> <label data-bind="attr: {for: getCode() + '_gender_type'}" class="label">
<span><!-- ko text: $t('Gender')--><!-- /ko --></span> <span><!-- ko text: $t('Gender')--><!-- /ko --></span>
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
</div> </div>
<!--/ko--> <!--/ko-->
<!-- ko if: $parent.showDob() --> <!-- ko if: showDob() -->
<div class="field required"> <div class="field required">
<label data-bind="attr: {for: getCode() + '_dob'}" class="label"> <label data-bind="attr: {for: getCode() + '_dob'}" class="label">
<span><!-- ko text: $t('Date of Birth')--><!-- /ko --></span> <span><!-- ko text: $t('Date of Birth')--><!-- /ko --></span>
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
</div> </div>
<!--/ko--> <!--/ko-->
<!-- ko if: $parent.showTelephone() --> <!-- ko if: showTelephone() -->
<div class="field required"> <div class="field required">
<label data-bind="attr: {for: getCode() + '_telephone'}" class="label"> <label data-bind="attr: {for: getCode() + '_telephone'}" class="label">
<span><!-- ko text: $t('Telephone')--><!-- /ko --></span> <span><!-- ko text: $t('Telephone')--><!-- /ko --></span>
...@@ -131,6 +131,29 @@ ...@@ -131,6 +131,29 @@
</div> </div>
</div> </div>
<!--/ko--> <!--/ko-->
<!-- ko if: showSsn() -->
<div class="field required">
<label data-bind="attr: {for: getCode() + '_ssn'}" class="label">
<span><!-- ko text: $t('Personal number (last digits)')--><!-- /ko --></span>
</label>
<div class="control">
<input type="text" class="input-text"
name="payment[ssn]"
data-bind="
attr: {
id: getCode() + '_ssn',
title: $t('Social Security Number'),
'data-container': getCode() + '-ssn',
'data-validate': JSON.stringify({'required-number':true }),
maxlength : getSsnLength()
},
value: ssn"
/>
</div>
</div>
<!--/ko-->
<!--/ko--> <!--/ko-->
</fieldset> </fieldset>
<div class="checkout-agreements-block"> <div class="checkout-agreements-block">
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment