This commit is contained in:
2026-02-02 15:18:51 +01:00
parent 7a26dd69a5
commit ae0ee002ec
170 changed files with 7446 additions and 1519 deletions

View File

@@ -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();