Files
drmaterac.pl/modules/przelewy24/views/js/przelewy24.js
2025-01-06 20:47:25 +01:00

442 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* @author Przelewy24
* @copyright Przelewy24
* @license https://www.gnu.org/licenses/lgpl-3.0.en.html
*/
function p24onResize() {
if ($(window).width() <= 640) {
$('.pay-method-list').addClass('mobile');
} else {
$('.pay-method-list').removeClass('mobile');
}
}
function p24DisplayOrderDetail(extrachargeText, extracharge)
{
if ('undefined' !== typeof extracharge && 0 !== $('.line-total').length) {
$('.line-total').before(
'<tr class="text-xs-right line-shipping" id="extracharge">' +
'<td colspan="3"><strong>' + extrachargeText + '</strong></td>' +
'<td colspan="1">' + extracharge + '</td>' +
'</tr>');
}
}
function p24DisplayExtrachargeReturn(extrachargeText, extrachargeReturnFormatted, currency)
{
if ('undefined' !== typeof currency && 0 !== $('.order-confirmation-table .font-weight-bold').length) {
$('.order-confirmation-table .font-weight-bold').before(
'<tr class="line-shipping" id="extracharge">' +
'<td colspan="1"><strong>' + extrachargeText + '</strong></td>' +
'<td colspan="1" class="text-xs-right">' + extrachargeReturnFormatted + ' '+currency+'</td>' +
'</tr>');
}
}
function p24DisplayExtrachargeAdmin(extrachargeText, extrachargeReturnFormatted, currency)
{
if ('undefined' !== typeof currency && 0 !== $('.panel .panel-total .table #total_order').length) {
$('.panel .panel-total .table #total_order').before(
'<tr id="extracharge">' +
'<td class="text-right" colspan="1"><strong>' + extrachargeText + '</strong></td>' +
'<td colspan="1" class="amount text-right nowrap">' + extrachargeReturnFormatted + ' '+currency+'</td>' +
'</tr>');
}
}
function p24setMethod(method) {
$('form#przelewy24Form input[name=p24_method]').val(parseInt(method) > 0 ? parseInt(method) : "");
}
function p24RememberCard(action, data) {
jQuery.ajax({
url: action,
method: 'POST',
data: data // like: {order: order}
});
}
// global settings
var formObject = {
'formAction': '',
'btnTextSubmit': ''
};
function formSend()
{
var actionForm = $('.p24-register-card-wrapper').attr('data-action-payment-check');
$.ajax(actionForm, {
method: 'POST',
data: { cartId : $('.p24-register-card-wrapper').attr('data-card-cart-id') }
}).done(function (data) {
if (1 === data) {
location.reload();
}
});
return true
}
$(document).ready(function () {
$('#przelewy24Form').on('submit', function(){
var haveInvoice = formSend();
if(haveInvoice)
{
return true;
}
return false;
});
if (0 !== $('#extracharge_text').length)
{
p24DisplayOrderDetail($('#extracharge_text').val(), $('#extracharge').val());
}
if (0 !== $('#extrachargeReturn').length)
{
p24DisplayExtrachargeReturn($('#extracharge_text').val(), $('#extrachargeReturnFormatted').val(), $('#currencySign').val());
}
if (0 !== $('#extracharge').length)
{
p24DisplayExtrachargeAdmin($('#extracharge_text').val(), $('#extrachargeFormatted').val(), $('#currencySign').val());
}
$( "#P24FormArea" ).click(function( event ) {
event.stopPropagation();
});
$('.bank-box').click(function () {
var isSelected = false;
var $btn = $('form#przelewy24Form button[type="submit"]');
if ($(this).hasClass('selected')) {
isSelected = true;
}
$('.bank-box').removeClass('selected').addClass('inactive');
if (isSelected) {
if (formObject.formAction.length) {
$("form#przelewy24Form").attr('action', formObject.formAction);
$btn.text(formObject.btnTextSubmit);
$('.p24-small-text').show();
}
p24setMethod(0);
$('.bank-box').removeClass('inactive');
} else {
if ($(this).attr('data-action')) { //
if (!formObject.formAction) {
formObject.formAction = $("form#przelewy24Form").attr('action');
}
$("form#przelewy24Form").attr('action', $(this).attr('data-action'));
$('form input[name="p24_card_customer_id"]').val($(this).attr('data-card-id'));
var btnText = $btn.attr('data-text-oneclick');
if (!formObject.btnTextSubmit) {
formObject.btnTextSubmit = $btn.text();
}
$btn.text(btnText);
$('.p24-small-text').hide();
} else {
p24setMethod($(this).attr('data-id'));
if (formObject.formAction.length) {
$("form#przelewy24Form").attr('action', formObject.formAction);
$btn.text(formObject.btnTextSubmit);
$('.p24-small-text').show();
}
}
$(this).addClass('selected').removeClass('inactive');
}
});
// show more / less payments method
$('.p24-more-stuff').click(function () {
$(this).fadeOut(100, function () {
$('.p24-less-stuff').fadeIn();
});
$('.pay-method-list-second').slideDown();
});
$('.p24-less-stuff').click(function () {
$(this).fadeOut(100, function () {
$('.p24-more-stuff').fadeIn();
});
$('.pay-method-list-second').slideUp();
});
//oneClick
$(".p24-payment-return-page input.p24-remember-my-card").change(function () {
var action = $(this).attr('data-action');
var remember = 0;
if ($(this).is(':checked')) {
remember = 1;
}
var data = {'remember': remember};
p24RememberCard(action, data);
if ($('#P24_registerCard').length) {
if ($('.p24-remember-my-card').is(':checked')) {
$('#P24_registerCard').prop('checked', true);
}
else{
$('#P24_registerCard').prop('checked', false);
}
}
});
if ($(".p24-payment-return-page input.p24-remember-my-card:checked")) {
var action = $("input.p24-remember-my-card:checked").attr('data-action');
var data = {'remember': 1};
if (!!action) {
p24RememberCard(action, data);
}
}
p24onResize();
if ($('#P24FormArea').length) {
var targetNode = document.getElementById('P24FormArea');
var config = {
attributes: true,
childList: true
};
var callback = function (mutation) {
try {
document.getElementById('P24_registerCard').style.display = 'none';
document.getElementById('register-text').style.display = 'none';
document.getElementById("P24_registerCard").checked = document.getElementById("p24-remember-my-card").checked;
} catch(ex) {
}
};
var observer = new MutationObserver(callback);
observer.observe(targetNode, config);
}
if (0 !== $('.refundAmount').length) {
$('.refundAmount').submit(function () {
return confirm($('#refundAmountText').val());
});
}
});
$(window).resize(function () {
p24onResize();
});
function hidePayJsPopup() {
$('#P24FormAreaHolder').fadeOut();
$('#proceedPaymentLink:not(:visible)').closest('a').fadeIn();
}
function showRegisterCardButton() {
$('.p24-register-card-wrapper .p24-add-credit-card').show();
}
function hideRegisterCardButton() {
$('.p24-register-card-wrapper .p24-add-credit-card').hide();
}
function showPayJsPopup() {
formSend();
setP24method("");
$('#P24FormAreaHolder').appendTo('body');
$('#proceedPaymentLink').closest('a').fadeOut();
$('#P24FormAreaHolder').fadeIn();
if ('object' !== typeof P24_Transaction) {
requestJsAjaxCard();
}
}
function hidePayJsPopup() {
$('#P24FormAreaHolder').fadeOut();
p24setMethod(0);
$('.bank-box').removeClass('selected');
$('.bank-box').removeClass('inactive');
$('#proceedPaymentLink:not(:visible)').closest('a').fadeIn();
}
function setP24method(method) {
$('form#przelewy24Form input[name=p24_method]').val(parseInt(method) > 0 ? parseInt(method) : "");
}
var sessionId = false;
var sign = false;
var payInShopScriptRequested = false;
function requestJsAjaxCard() {
p24showLoader();
var actionForm = $('.p24-register-card-wrapper').attr('data-action-register-card-form');
$.ajax(actionForm, {
method: 'POST',
type: 'POST',
data: {
action: $('.p24-register-card-wrapper').attr('data-card-action'),
cartId: $('.p24-register-card-wrapper').attr('data-card-cart-id')
},
error: function () {
payInShopFailure();
},
success: function (response) {
p24hideLoader();
var data = JSON.parse(response);
if (data.error) {
$('#p24-register-card-form').fadeIn(200).html('<p class="p24-text-error">' + data.error + '</p>');
} else {
sessionId = data.sessionId;
sign = data.p24_sign;
var dictionary = $('.p24-register-card-wrapper').attr('data-dictionary');
$('#P24FormArea').html("");
var p24FormContainer = $("<div></div>")
.attr('id', 'P24FormContainer')
.attr('data-sign', data.p24_sign)
.attr('data-successCallback', $('.p24-register-card-wrapper').attr('data-successCallback'))
.attr('data-failureCallback', $('.p24-register-card-wrapper').attr('data-failureCallback'))
.attr('data-client-id', data.client_id)
.attr('data-dictionary', dictionary)
.appendTo('#P24FormArea');
setTimeout(function() {
setFormCenter();
$('#P24FormArea').fadeIn("slow", function() {
$('#p24-card-loader').fadeOut();
});
}, 200);
if (document.createStyleSheet) {
document.createStyleSheet(data.p24cssURL);
} else {
$('head').append('<link rel="stylesheet" type="text/css" href="' + data.p24cssURL + '" />');
}
if (!payInShopScriptRequested) {
$.getScript(data.p24jsURL, function () {
P24_Transaction.init();
$('#P24FormContainer').removeClass('loading');
payInShopScriptRequested = false;
window.setTimeout(function () {
$('#P24FormContainer button').on('click', function () {
if (P24_Card.validate()) {
$(this).after('<div class="loading" id="card-loader" style="display: none"></div>');
$('#card-loader').fadeIn('slow');
}
});
}, 1000);
});
}
payInShopScriptRequested = true;
}
}
});
}
function setFormCenter() {
var p24FormArea = $('#P24FormArea');
p24FormArea.css('display', 'none');
p24FormArea.css('visibility', 'visible');
}
function registerCardInPanelSuccess(orderId) {
$('#P24FormArea').fadeOut(function () {
$('#p24-card-loader').fadeIn();
});
}
function registerCardInPanelFailure(error) {
p24hideLoader();
$('#P24FormArea').fadeOut(function () {
var message = $('.p24-account-card-form').attr('data-translate-error');
if (undefined !== error && null !== error) {
if (error.errorMessagePl) {
message = error.errorMessagePl;
} else if(error.errorMessage){
message = error.errorMessage;
}else{
message = error;
}
}
$('#p24-card-alert').html('<div class="alert alert-danger">' + message + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
P24_Transaction = undefined;
$('#p24-card-alert').fadeIn();
});
}
function payInShopSuccess(orderId, oneclickOrderId) {
action = $('.p24-register-card-wrapper').attr('data-action-remember_order_id');
$.ajax(action, {
method: 'POST',
type: 'POST',
data: {
'sessionId': sessionId,
'orderId': orderId,
'oneclickOrderId': oneclickOrderId,
'sign': sign
},
});
setTimeout(function() {
href = $('.p24-register-card-wrapper').attr('data-action-payment-success');
window.location.href = href;
}, 500);
}
function payInShopFailure() {
p24hideLoader();
setTimeout(function() {
href = $('.p24-register-card-wrapper').attr('data-action-payment-failed');
window.location.href = href;
}, 500);
}
function p24showLoader() {
$('.p24-loader').fadeIn(400);
$('.p24-loader-bg').fadeIn(300);
}
function p24hideLoader() {
$('.p24-loader').fadeOut(300);
$('.p24-loader-bg').fadeOut(300);
}
function formSubmit(description) {
var form = document.getElementById('przelewy24Form');
var descriptionInput = $("[name='p24_description']");
if (undefined !== description && null !== description) {
descriptionInput.val(description);
}
form.submit();
}
function proceedPayment(cartId) {
$.when(formSend()).done(function() {
$action = $('#submitButton').attr('data-validation-link');
$.ajax($action, {
method: 'POST',
data: {
action: 'makeOrder',
cartId: cartId
},
error: function () {
formSubmit();
},
success: function (response) {
formSubmit(response.description);
}
});
});
}
/* Fix hardcoded images. */
$(function() {
var rx = /logo_(\d+)/;
var $images = $('img[src*=\'/template/201312/bank/logo_\']');
$images.each(function (idx, elm) {
var $elm = $(elm);
var $parent = $elm.parent();
var src = $elm.attr('src');
var executedRx = rx.exec(src);
if (!executedRx) {
return;
}
var $newBox = $('<span>').addClass('bank-logo').addClass('bank-logo-' + executedRx[1]);
$parent.append($newBox);
$elm.remove();
})
});