update
This commit is contained in:
@@ -41,14 +41,18 @@ var paynow = {
|
||||
form: '.paynow-blik-form',
|
||||
terms: '#conditions_to_approve\\[terms-and-conditions\\], #cgv',
|
||||
termsLabel: 'label[for="conditions_to_approve\\[terms-and-conditions\\]"], label[for="cgv"]',
|
||||
termsErrorLabel: '#js-paynow-terms-error',
|
||||
paymentButton: '#payment-confirmation button',
|
||||
blikCode: '#paynow_blik_code',
|
||||
blikButton: 'form.paynow-blik-form div.paynow-payment-option-container button',
|
||||
blikErrorLabel: 'form.paynow-blik-form span.error',
|
||||
|
||||
pblMethod: 'div.paynow-payment-pbls input[name="paymentMethodId"]',
|
||||
cardMethod: 'div.paynow-payment-card input[name="paymentMethodToken"]',
|
||||
cardMethodOptions: 'div.paynow-payment-card .paynow-payment-card-option',
|
||||
paymentMethod: 'input[name="payment-option"]',
|
||||
|
||||
cardMethodMiniMenuOpen: '.paynow-payment-card-menu .paynow-payment-card-menu-button',
|
||||
cardMethodRemove: '[data-remove-saved-instrument]',
|
||||
},
|
||||
|
||||
init: function(){
|
||||
@@ -59,21 +63,20 @@ var paynow = {
|
||||
$(document).on('click', paynow.selectors.blikButton, paynow.blikFormSubmit);
|
||||
$(document).on('keyup', paynow.selectors.blikCode, paynow.blikValidate);
|
||||
$(document).on('change', paynow.selectors.pblMethod, paynow.pblValidate);
|
||||
$(document).on('change', paynow.selectors.paymentMethod, paynow.blikFormPrepare);
|
||||
$(document).on('change', paynow.selectors.cardMethod, paynow.cardValidate);
|
||||
$(document).on('change', paynow.selectors.paymentMethod, paynow.onPaymentOptionChange);
|
||||
$(document).on('change', paynow.selectors.terms, function(){
|
||||
paynow.blikFormPrepare()
|
||||
paynow.onPaymentOptionChange()
|
||||
paynow.termsValidate()
|
||||
});
|
||||
|
||||
var termsErrorPlaceholderExists = $(paynow.selectors.terms).length != 0
|
||||
&& $(paynow.selectors.termsLabel).length != 0
|
||||
&& $(paynow.selectors.termsErrorLabel).length == 0
|
||||
|
||||
if (termsErrorPlaceholderExists) {
|
||||
$(paynow.selectors.termsLabel).after('<span id="js-paynow-terms-error" class="paynow-terms-error"></span>')
|
||||
}
|
||||
$(document).on('click', paynow.selectors.cardMethodMiniMenuOpen, paynow.toggleCardMiniMenu);
|
||||
$(document).on('click', paynow.selectors.cardMethodRemove, paynow.removeSavedInstrument);
|
||||
$(document).on('click', function (ev) {
|
||||
paynow.closeMiniMenu(ev)
|
||||
});
|
||||
|
||||
paynow.addApplePayEnabledToCookie();
|
||||
paynow.addFingerprintToCardPayment();
|
||||
},
|
||||
|
||||
overrideDefaults: function() {
|
||||
@@ -104,7 +107,7 @@ var paynow = {
|
||||
}
|
||||
|
||||
if (paynow.isTermsChecked()) {
|
||||
$(paynow.selectors.termsErrorLabel).text('')
|
||||
$(paynow.selectors.blikErrorLabel).text('')
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
@@ -117,10 +120,9 @@ var paynow = {
|
||||
}
|
||||
|
||||
$(paynow.selectors.blikErrorLabel).text('')
|
||||
$(paynow.selectors.termsErrorLabel).text('')
|
||||
|
||||
if (paynow.termsValidate() == false) {
|
||||
$(paynow.selectors.termsErrorLabel).text($(paynow.selectors.form).data('terms-message'))
|
||||
$(paynow.selectors.blikErrorLabel).text($(paynow.selectors.form).data('terms-message'))
|
||||
prestashop.emit('paynow_event_blik_submit_fail', {
|
||||
type: 'terms_not_accepted',
|
||||
})
|
||||
@@ -160,28 +162,35 @@ var paynow = {
|
||||
)
|
||||
},
|
||||
|
||||
blikFormPrepare: function() {
|
||||
if ($(paynow.selectors.blikCode).length != 1) {
|
||||
return
|
||||
onPaymentOptionChange: function () {
|
||||
if ($(paynow.selectors.blikCode).length === 1) {
|
||||
$(paynow.selectors.blikCode).mask('000 000', {placeholder: "___ ___"})
|
||||
}
|
||||
|
||||
$(paynow.selectors.blikCode).mask('000 000', {placeholder: "___ ___"})
|
||||
|
||||
if ($(paynow.selectors.form).data('blik-autofocus') == '1') {
|
||||
if ($(paynow.selectors.form).data('blik-autofocus') === '1') {
|
||||
$(paynow.selectors.blikCode).focus();
|
||||
}
|
||||
|
||||
if ($(paynow.selectors.blikCode).is(':visible')) {
|
||||
paynow.paymentButton.disable()
|
||||
paynow.paymentButton.hide()
|
||||
} else if ($(paynow.selectors.cardMethodOptions).is(':visible') && !$(paynow.selectors.cardMethod + ':checked').length) {
|
||||
paynow.paymentButton.disable()
|
||||
} else if ($('div.paynow-payment-pbls .paynow-payment-option-pbl').is(':visible')) {
|
||||
paynow.pblValidate()
|
||||
} else {
|
||||
paynow.paymentButton.enable()
|
||||
paynow.paymentButton.show()
|
||||
}
|
||||
},
|
||||
|
||||
// backward compatibility
|
||||
blikFormPrepare: function() {
|
||||
paynow.onPaymentOptionChange()
|
||||
},
|
||||
|
||||
blikValidate: function () {
|
||||
blik_code_value = $(paynow.selectors.blikCode).val().replace(/\s/g, '');
|
||||
const blik_code_value = $(paynow.selectors.blikCode).val().replace(/\s/g, '');
|
||||
|
||||
if (blik_code_value.length === 6 && !isNaN(parseInt(blik_code_value)) && parseInt(blik_code_value)) {
|
||||
$(paynow.selectors.blikErrorLabel).text('');
|
||||
@@ -193,8 +202,20 @@ var paynow = {
|
||||
}
|
||||
},
|
||||
|
||||
cardValidate: function () {
|
||||
const checkedCardOption = $(paynow.selectors.cardMethod + ':checked');
|
||||
|
||||
if (checkedCardOption.length && (!paynow.config.validateTerms || $(paynow.selectors.terms).is(':checked'))) {
|
||||
paynow.paymentButton.enable();
|
||||
return true
|
||||
} else {
|
||||
paynow.paymentButton.disable();
|
||||
return false
|
||||
}
|
||||
},
|
||||
|
||||
pblValidate: function () {
|
||||
if (paynow.config.validateTerms && paynow.isTermsChecked()) {
|
||||
if (!(paynow.config.validateTerms && !paynow.isTermsChecked()) && $(paynow.selectors.pblMethod + ':checked').length > 0) {
|
||||
paynow.paymentButton.enable();
|
||||
return true
|
||||
} else {
|
||||
@@ -212,6 +233,16 @@ var paynow = {
|
||||
return false
|
||||
},
|
||||
|
||||
closeMiniMenu: function (e) {
|
||||
if (!$(e.target).is(paynow.selectors.cardMethodRemove) && !$(e.target).is(paynow.selectors.cardMethodMiniMenuOpen)) {
|
||||
$(paynow.selectors.cardMethodRemove).addClass('--hidden')
|
||||
}
|
||||
},
|
||||
|
||||
toggleCardMiniMenu: function (e) {
|
||||
$(e.currentTarget).siblings().toggleClass('--hidden')
|
||||
},
|
||||
|
||||
isTermsChecked: function () {
|
||||
if (paynow.config.allTermsHaveToBeChecked) {
|
||||
return !$(paynow.selectors.terms).is(':not(:checked)')
|
||||
@@ -261,6 +292,63 @@ var paynow = {
|
||||
document.cookie = 'applePayEnabled=' + (applePayEnabled ? '1' : '0');
|
||||
},
|
||||
|
||||
addFingerprintToCardPayment: function () {
|
||||
const input = $('#payment-method-fingerprint');
|
||||
|
||||
if (!input.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const fpPromise = import('https://static.paynow.pl/scripts/PyG5QjFDUI.min.js')
|
||||
.then(FingerprintJS => FingerprintJS.load())
|
||||
|
||||
fpPromise
|
||||
.then(fp => fp.get())
|
||||
.then(result => {
|
||||
input.val(result.visitorId);
|
||||
})
|
||||
} catch (e) {
|
||||
console.error('Cannot get fingerprint');
|
||||
}
|
||||
},
|
||||
|
||||
removeSavedInstrument: function (e) {
|
||||
const target = $(e.currentTarget);
|
||||
const savedInstrument = target.data('removeSavedInstrument');
|
||||
const errorMessage = target.data('errorMessage');
|
||||
const cardMethodOption = $('#wrapper-' + savedInstrument);
|
||||
|
||||
cardMethodOption.addClass('loading');
|
||||
$.ajax(target.data('action'), {
|
||||
method: 'POST', type: 'POST',
|
||||
data: {
|
||||
'savedInstrumentToken': savedInstrument,
|
||||
'token': target.data('token'),
|
||||
},
|
||||
}).success(function (data, textStatus, jqXHR) {
|
||||
if (data.success === true) {
|
||||
cardMethodOption.remove();
|
||||
} else {
|
||||
cardMethodOption.removeClass('loading');
|
||||
paynow.showRemoveSavedInstrumentErrorMessage(savedInstrument, errorMessage);
|
||||
}
|
||||
}).error(function (jqXHR, textStatus, errorThrown) {
|
||||
cardMethodOption.removeClass('loading');
|
||||
paynow.showRemoveSavedInstrumentErrorMessage(savedInstrument, errorMessage);
|
||||
});
|
||||
},
|
||||
|
||||
showRemoveSavedInstrumentErrorMessage: function (savedInstrument, errorMessage) {
|
||||
const errorMessageWrapper = jQuery('#wrapper-' + savedInstrument + ' .paynow-payment-card-error');
|
||||
|
||||
errorMessageWrapper.text(errorMessage);
|
||||
|
||||
setTimeout(() => {
|
||||
errorMessageWrapper.text('');
|
||||
}, 5000)
|
||||
},
|
||||
|
||||
paymentButton: {
|
||||
show: function () {
|
||||
$(paynow.selectors.paymentButton).show();
|
||||
|
||||
Reference in New Issue
Block a user