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 46c6758b authored by Rik ter Beek's avatar Rik ter Beek

#61 add gender,dob and telephone number iput fields for openinvoice

parent 1d9aaa5d
...@@ -27,6 +27,10 @@ use Symfony\Component\Config\Definition\Exception\Exception; ...@@ -27,6 +27,10 @@ use Symfony\Component\Config\Definition\Exception\Exception;
class Pos extends \Magento\Payment\Block\Form class Pos extends \Magento\Payment\Block\Form
{ {
/**
* quest prefix
*/
const GUEST_ID = 'customer_';
protected $_orderFactory; protected $_orderFactory;
/** /**
......
...@@ -28,6 +28,11 @@ use Symfony\Component\Config\Definition\Exception\Exception; ...@@ -28,6 +28,11 @@ use Symfony\Component\Config\Definition\Exception\Exception;
class Redirect extends \Magento\Payment\Block\Form class Redirect extends \Magento\Payment\Block\Form
{ {
/**
* quest prefix
*/
const GUEST_ID = 'customer_';
/** /**
* @var \Magento\Sales\Model\OrderFactory * @var \Magento\Sales\Model\OrderFactory
*/ */
...@@ -118,7 +123,9 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -118,7 +123,9 @@ class Redirect extends \Magento\Payment\Block\Form
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->_order->getPayment()->getAdditionalInformation('brand_code') == 'klarna') { if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod(
$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";
...@@ -133,7 +140,9 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -133,7 +140,9 @@ class Redirect extends \Magento\Payment\Block\Form
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->_order->getPayment()->getAdditionalInformation('brand_code') == 'klarna') { if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod(
$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";
...@@ -194,6 +203,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -194,6 +203,7 @@ class Redirect extends \Magento\Payment\Block\Form
} }
$formFields = []; $formFields = [];
$formFields['merchantAccount'] = $merchantAccount; $formFields['merchantAccount'] = $merchantAccount;
$formFields['merchantReference'] = $realOrderId; $formFields['merchantReference'] = $realOrderId;
$formFields['paymentAmount'] = (int)$amount; $formFields['paymentAmount'] = (int)$amount;
...@@ -261,6 +271,10 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -261,6 +271,10 @@ class Redirect extends \Magento\Payment\Block\Form
if ($this->_order->getPayment()->getAdditionalInformation( if ($this->_order->getPayment()->getAdditionalInformation(
\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE) == "klarna" \Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE) == "klarna"
) { ) {
// // needed for DE and AT
$formFields['klarna.acceptPrivacyPolicy'] = 'true';
// 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";
......
...@@ -54,7 +54,24 @@ class HppCommand implements CommandInterface ...@@ -54,7 +54,24 @@ class HppCommand implements CommandInterface
// do not send email // do not send email
$payment = $payment->getPayment(); $payment = $payment->getPayment();
$payment->getOrder()->setCanSendNewEmailFlag(false); $order = $payment->getOrder();
$order->setCanSendNewEmailFlag(false);
// update customer based on additionalFields
if ($payment->getAdditionalInformation("gender")) {
$order->setCustomerGender(\Adyen\Payment\Model\Gender::getMagentoGenderFromAdyenGender(
$payment->getAdditionalInformation("gender"))
);
}
if ($payment->getAdditionalInformation("dob")) {
$order->setCustomerDob($payment->getAdditionalInformation("dob"));
}
if ($payment->getAdditionalInformation("telephone")) {
$order->getBillingAddress()->setTelephone($payment->getAdditionalInformation("telephone"));
}
// update status and state // update status and state
$stateObject->setState(\Magento\Sales\Model\Order::STATE_NEW); $stateObject->setState(\Magento\Sales\Model\Order::STATE_NEW);
......
...@@ -29,6 +29,11 @@ use Magento\Payment\Gateway\CommandInterface; ...@@ -29,6 +29,11 @@ use Magento\Payment\Gateway\CommandInterface;
class PayByMailCommand implements CommandInterface class PayByMailCommand implements CommandInterface
{ {
/**
* quest prefix
*/
const GUEST_ID = 'customer_';
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
......
...@@ -768,6 +768,22 @@ class Data extends AbstractHelper ...@@ -768,6 +768,22 @@ class Data extends AbstractHelper
return $billingAgreements; return $billingAgreements;
} }
/**
* @param $paymentMethod
* @return bool
*/
public function isPaymentMethodOpenInvoiceMethod($paymentMethod)
{
if (strlen($paymentMethod) >= 9 && substr($paymentMethod, 0, 9) == 'afterpay_') {
return true;
} else if($paymentMethod == 'klarna') {
return true;
} else {
return false;
}
}
/** /**
* @return bool * @return bool
*/ */
......
...@@ -201,6 +201,11 @@ class PaymentMethods extends AbstractHelper ...@@ -201,6 +201,11 @@ class PaymentMethods extends AbstractHelper
$paymentMethodCode = $paymentMethod['brandCode']; $paymentMethodCode = $paymentMethod['brandCode'];
$paymentMethod = $this->_fieldMapPaymentMethod($paymentMethod); $paymentMethod = $this->_fieldMapPaymentMethod($paymentMethod);
// check if payment method is an openinvoice method
$paymentMethod['isPaymentMethodOpenInvoiceMethod'] =
$this->_adyenHelper->isPaymentMethodOpenInvoiceMethod($paymentMethodCode);
// add icon location in result // add icon location in result
if ($this->_adyenHelper->showLogos()) { if ($this->_adyenHelper->showLogos()) {
......
...@@ -1074,10 +1074,8 @@ class Cron ...@@ -1074,10 +1074,8 @@ class Cron
// if auto capture mode for openinvoice is turned on then use auto capture // if auto capture mode for openinvoice is turned on then use auto capture
if ($captureModeOpenInvoice == true && if ($captureModeOpenInvoice == true &&
(strcmp($this->_paymentMethod, 'openinvoice') === 0 || $this->_adyenHelper->isPaymentMethodOpenInvoiceMethod($this->_paymentMethod)
strcmp($this->_paymentMethod, 'afterpay_default') === 0 || ) {
strcmp($this->_paymentMethod, 'klarna') === 0)) {
$this->_adyenLogger->addAdyenNotificationCronjob( $this->_adyenLogger->addAdyenNotificationCronjob(
'This payment method is configured to be working as auto capture ' 'This payment method is configured to be working as auto capture '
); );
...@@ -1106,10 +1104,7 @@ class Cron ...@@ -1106,10 +1104,7 @@ class Cron
* online capture after delivery, use Magento backend to online invoice * online capture after delivery, use Magento backend to online invoice
* (if the option auto capture mode for openinvoice is not set) * (if the option auto capture mode for openinvoice is not set)
*/ */
if (strcmp($this->_paymentMethod, 'openinvoice') === 0 || if ($this->_adyenHelper->isPaymentMethodOpenInvoiceMethod($this->_paymentMethod)) {
strcmp($this->_paymentMethod, 'afterpay_default') === 0 ||
strcmp($this->_paymentMethod, 'klarna') === 0) {
$this->_adyenLogger->addAdyenNotificationCronjob('Capture mode for klarna is by default set to manual'); $this->_adyenLogger->addAdyenNotificationCronjob('Capture mode for klarna is by default set to manual');
return false; return false;
} }
......
<?php
/**
* ######
* ######
* ############ ####( ###### #####. ###### ############ ############
* ############# #####( ###### #####. ###### ############# #############
* ###### #####( ###### #####. ###### ##### ###### ##### ######
* ###### ###### #####( ###### #####. ###### ##### ##### ##### ######
* ###### ###### #####( ###### #####. ###### ##### ##### ######
* ############# ############# ############# ############# ##### ######
* ############ ############ ############# ############ ##### ######
* ######
* #############
* ############
*
* Adyen Payment module (https://www.adyen.com/)
*
* Copyright (c) 2015 Adyen BV (https://www.adyen.com/)
* See LICENSE.txt for license details.
*
* Author: Adyen <magento@adyen.com>
*/
namespace Adyen\Payment\Model;
class Gender
{
const MALE = '1';
const FEMALE = '2';
const MALE_VALUE = 'MALE';
const FEMALE_VALUE = 'FEMALE';
/**
* @return array
*/
public static function getGenderTypes()
{
return [
self::MALE_VALUE => __('Male'),
self::FEMALE_VALUE => __('Female')
];
}
/**
* Get Magento Gender Value from Adyen Gender Value
*
* @param string $genderValue
* @return null|string
*/
public static function getMagentoGenderFromAdyenGender($genderValue)
{
$gender = null;
if ($genderValue == self::MALE_VALUE) {
$gender = self::MALE;
} elseif ($genderValue == self::FEMALE_VALUE) {
$gender = self::FEMALE;
}
return $gender;
}
/**
* @param string $genderValue
* @return null|string
*/
public static function getAdyenGenderFromMagentoGender($genderValue)
{
$gender = null;
if ($genderValue == self::MALE) {
$gender = self::MALE_VALUE;
} elseif ($genderValue == self::FEMALE) {
$gender = self::FEMALE_VALUE;
}
return $gender;
}
}
\ No newline at end of file
...@@ -54,22 +54,33 @@ class AdyenHppConfigProvider implements ConfigProviderInterface ...@@ -54,22 +54,33 @@ class AdyenHppConfigProvider implements ConfigProviderInterface
*/ */
protected $_urlBuilder; protected $_urlBuilder;
/**
* @var \Magento\Customer\Model\Session
*/
protected $_customerSession;
/** /**
* AdyenHppConfigProvider constructor. * AdyenHppConfigProvider constructor.
* *
* @param PaymentHelper $paymentHelper * @param PaymentHelper $paymentHelper
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Framework\App\RequestInterface $request
* @param \Magento\Framework\UrlInterface $urlBuilder
* @param \Magento\Customer\Model\Session $customerSession
*/ */
public function __construct( public function __construct(
PaymentHelper $paymentHelper, PaymentHelper $paymentHelper,
\Adyen\Payment\Helper\Data $adyenHelper, \Adyen\Payment\Helper\Data $adyenHelper,
\Magento\Framework\App\RequestInterface $request, \Magento\Framework\App\RequestInterface $request,
\Magento\Framework\UrlInterface $urlBuilder \Magento\Framework\UrlInterface $urlBuilder,
\Magento\Customer\Model\Session $customerSession
) { ) {
$this->_paymentHelper = $paymentHelper; $this->_paymentHelper = $paymentHelper;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
$this->_request = $request; $this->_request = $request;
$this->_urlBuilder = $urlBuilder; $this->_urlBuilder = $urlBuilder;
$this->_customerSession = $customerSession;
} }
/** /**
...@@ -90,9 +101,40 @@ class AdyenHppConfigProvider implements ConfigProviderInterface ...@@ -90,9 +101,40 @@ class AdyenHppConfigProvider implements ConfigProviderInterface
] ]
]; ];
// get customer
if ($this->_customerSession->isLoggedIn()) {
$gender = \Adyen\Payment\Model\Gender::getAdyenGenderFromMagentoGender(
$this->_customerSession->getCustomerData()->getGender()
);
// format to calendar date
$dob = $this->_customerSession->getCustomerData()->getDob();
$dob = strtotime($dob);
$dob = date('m/d/Y', $dob);
} else {
$gender = "";
$dob = "";
}
// add to config
$config['payment'] ['adyenHpp']['gender'] = $gender;
$config['payment'] ['adyenHpp']['dob'] = $dob;
// gender types
$config['payment'] ['adyenHpp']['genderTypes'] = \Adyen\Payment\Model\Gender::getGenderTypes();
$paymentMethodSelectionOnAdyen = $paymentMethodSelectionOnAdyen =
$this->_adyenHelper->getAdyenHppConfigDataFlag('payment_selection_on_adyen'); $this->_adyenHelper->getAdyenHppConfigDataFlag('payment_selection_on_adyen');
$config['payment'] ['adyenHpp']['isPaymentMethodSelectionOnAdyen'] = $paymentMethodSelectionOnAdyen; $config['payment'] ['adyenHpp']['isPaymentMethodSelectionOnAdyen'] = $paymentMethodSelectionOnAdyen;
$config['payment'] ['adyenHpp']['showGender'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_gender');
$config['payment'] ['adyenHpp']['showDob'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_dob');
$config['payment'] ['adyenHpp']['showTelephone'] = $this->_adyenHelper->getAdyenHppConfigDataFlag(
'show_telephone'
);
return $config; return $config;
} }
......
...@@ -33,13 +33,20 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver ...@@ -33,13 +33,20 @@ class AdyenHppDataAssignObserver extends AbstractDataAssignObserver
{ {
const BRAND_CODE = 'brand_code'; const BRAND_CODE = 'brand_code';
const ISSUER_ID = 'issuer_id'; const ISSUER_ID = 'issuer_id';
const GENDER = 'gender';
const DOB = 'dob';
const TELEPHONE = 'telephone';
/** /**
* @var array * @var array
*/ */
protected $additionalInformationList = [ protected $additionalInformationList = [
self::BRAND_CODE, self::BRAND_CODE,
self::ISSUER_ID self::ISSUER_ID,
self::GENDER,
self::DOB,
self::TELEPHONE
]; ];
/** /**
......
...@@ -55,6 +55,31 @@ ...@@ -55,6 +55,31 @@
<backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model> <backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model>
<config_path>payment/adyen_hpp/hmac_live</config_path> <config_path>payment/adyen_hpp/hmac_live</config_path>
</field> </field>
<group id="adyen_hpp_openinvoice_settings" translate="label" showInDefault="1" showInWebsite="1" sortOrder="100">
<label>Klarna\Afterpay Settings</label>
<frontend_model>Magento\Config\Block\System\Config\Form\Fieldset</frontend_model>
<field id="show_gender" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Show Gender</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<config_path>payment/adyen_hpp/show_gender</config_path>
</field>
<field id="show_dob" translate="label" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Show Date of Birth</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<config_path>payment/adyen_hpp/show_dob</config_path>
</field>
<field id="show_telephone" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Show Telephone</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<config_path>payment/adyen_hpp/show_telephone</config_path>
</field>
<field id="ignore_second_address_field" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Ignore the second address line field</label>
<tooltip>If you do not want to send the second line address field to Klarna set this setting to 'Yes'</tooltip>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<config_path>payment/adyen_hpp/ignore_second_address_field</config_path>
</field>
</group>
<group id="adyen_hpp_advanced_settings" translate="label" showInDefault="1" showInWebsite="1" sortOrder="200"> <group id="adyen_hpp_advanced_settings" translate="label" showInDefault="1" showInWebsite="1" sortOrder="200">
<label>Advanced Settings</label> <label>Advanced Settings</label>
<frontend_model>Magento\Config\Block\System\Config\Form\Fieldset</frontend_model> <frontend_model>Magento\Config\Block\System\Config\Form\Fieldset</frontend_model>
......
...@@ -61,6 +61,11 @@ ...@@ -61,6 +61,11 @@
background-position: 0 -272px; background-position: 0 -272px;
} }
.checkout-payment-method .input-text._has-datepicker {
width:20%;
margin-right:10px;
}
...@@ -52,7 +52,10 @@ define( ...@@ -52,7 +52,10 @@ define(
this._super() this._super()
.observe([ .observe([
'brandCode', 'brandCode',
'issuerId' 'issuerId',
'gender',
'dob',
'telephone'
]); ]);
return this; return this;
}, },
...@@ -100,36 +103,42 @@ define( ...@@ -100,36 +103,42 @@ define(
var paymentList = _.map(paymentMethods, function(value) { var paymentList = _.map(paymentMethods, function(value) {
if(value.brandCode == "ideal") { var result = {};
return { result.value = value.brandCode;
'value': value.brandCode, result.name = value;
'name': value, result.method = self.item.method;
'method': self.item.method, result.getCode = function() {
'issuerIds': value.issuers,
'issuerId': ko.observable(null),
getCode: function() {
return self.item.method; return self.item.method;
}, };
validate: function () { result.validate = function () {
return self.validate(); return self.validate();
} }
}
} else {
return { if(value.brandCode == "ideal") {
'value': value.brandCode, result.issuerIds = value.issuers;
'name': value, result.issuerId = ko.observable(null);
'method': self.item.method, } else if(value.isPaymentMethodOpenInvoiceMethod) {
getCode: function() { result.telephone = ko.observable(quote.shippingAddress().telephone);
return self.item.method; result.gender = ko.observable(window.checkoutConfig.payment.adyenHpp.gender);
result.dob = ko.observable(window.checkoutConfig.payment.adyenHpp.dob);
result.datepickerValue = ko.observable(); // needed ??
}
result.isPaymentMethodOpenInvoiceMethod = function() {
return value.isPaymentMethodOpenInvoiceMethod;
}
return result;
});
return paymentList;
}, },
validate: function () { getGenderTypes: function() {
return self.validate(); // return window.checkoutConfig.payment.adyenHpp.genderTypes;
} return _.map(window.checkoutConfig.payment.adyenHpp.genderTypes, function(value, key) {
} return {
} 'key': key,
'value': value
} }
); });
return paymentList;
}, },
/** Redirect to adyen */ /** Redirect to adyen */
continueToAdyen: function () { continueToAdyen: function () {
...@@ -146,26 +155,24 @@ define( ...@@ -146,26 +155,24 @@ define(
if (this.validate() && additionalValidators.validate()) { if (this.validate() && additionalValidators.validate()) {
// for ideal add brand_code in request
var data = {};
data.method = self.method;
data.po_number = null;
var additionalData = {};
additionalData.brand_code = self.value;
if(brandCode() == "ideal") { if(brandCode() == "ideal") {
var data = { additionalData.issuer_id = this.issuerId();
"method": self.method, } else if(brandCode() == "klarna") {
"po_number": null, additionalData.gender = this.gender();
"additional_data": { additionalData.dob = this.dob();
issuer_id: this.issuerId(), additionalData.telephone = this.telephone();
brand_code: self.value
}
};
} else {
var data = {
"method": self.method,
"po_number": null,
"additional_data": {
brand_code: self.value
}
};
} }
data.additional_data = additionalData;
selectPaymentMethodAction(data); selectPaymentMethodAction(data);
setPaymentMethodAction(); setPaymentMethodAction();
} }
...@@ -212,6 +219,15 @@ define( ...@@ -212,6 +219,15 @@ define(
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;
} }
......
...@@ -53,10 +53,8 @@ ...@@ -53,10 +53,8 @@
</div> </div>
<fieldset class="fieldset" data-bind='attr: {id: "payment_form_" + $parent.getCode() + "_" + value}'> <fieldset class="fieldset" data-bind='attr: {id: "payment_form_" + $parent.getCode() + "_" + value}'>
<div class="payment-method-note">
<!-- ko if: value == 'ideal' --> <!-- ko if: value == 'ideal' -->
<label data-bind="attr: {'for': 'issuerId'}" class="label"> <label data-bind="attr: {'for': 'issuerId'}" class="label">
<span><!-- ko text: $t('Select Your Bank') --><!-- /ko --></span> <span><!-- ko text: $t('Select Your Bank') --><!-- /ko --></span>
</label> </label>
...@@ -68,11 +66,72 @@ ...@@ -68,11 +66,72 @@
value: issuerId, value: issuerId,
optionsCaption: $t('Choose Your Bank')"> optionsCaption: $t('Choose Your Bank')">
</select> </select>
<!--/ko-->
<!-- ko if: isPaymentMethodOpenInvoiceMethod() -->
<!-- ko if: $parent.showGender() -->
<div class="field gender_type type required">
<label data-bind="attr: {for: getCode() + '_gender_type'}" class="label">
<span><!-- ko text: $t('Gender')--><!-- /ko --></span>
</label>
<div class="control">
<select class="select select-gender-type"
name="payment[gender]"
data-bind="attr: {id: getCode() + '_gender_type', 'data-container': getCode() + '-gender-type', 'data-validate': JSON.stringify({required:true})},
options: $parent.getGenderTypes(),
optionsValue: 'key',
optionsText: 'value',
optionsCaption: $t('-Please select-'),
value: gender"
data-validate="{required:true}">
</select>
</div>
</div>
<!--/ko--> <!--/ko-->
<!-- ko if: $parent.showDob() -->
<div class="field required">
<label data-bind="attr: {for: getCode() + '_dob'}" class="label">
<span><!-- ko text: $t('Date of Birth')--><!-- /ko --></span>
</label>
<div class="control">
<input type="text" class="input-text"
name="payment[dob]"
data-bind="
datepicker: { storage: datepickerValue, options: { showOn: 'both' } },
attr: {
title: $t('Date of Birth'),
'data-container': getCode() + '-dob',
'data-validate': JSON.stringify({'required':true })
},
value: dob"
/>
</div>
</div>
<!--/ko-->
<!-- ko if: $parent.showTelephone() -->
<div class="field required">
<label data-bind="attr: {for: getCode() + '_telephone'}" class="label">
<span><!-- ko text: $t('Telephone')--><!-- /ko --></span>
</label>
<div class="control">
<input type="number" class="input-text"
name="payment[telephone]"
data-bind="
attr: {
id: getCode() + '_telephone',
title: $t('Telephone'),
'data-container': getCode() + '-telephone',
'data-validate': JSON.stringify({'required-number':true })
},
value: telephone"
/>
</div>
</div> </div>
<!--/ko-->
<!--/ko-->
</fieldset> </fieldset>
<div class="checkout-agreements-block"> <div class="checkout-agreements-block">
<!-- ko foreach: $parents[1].getRegion('before-place-order') --> <!-- ko foreach: $parents[1].getRegion('before-place-order') -->
......
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