first commit

This commit is contained in:
2026-02-03 11:15:43 +02:00
commit a0d918ab0d
2 changed files with 373 additions and 0 deletions

69
assets/scs-checkout.js Normal file
View File

@@ -0,0 +1,69 @@
(function () {
function parsePayload(element) {
var raw = element.getAttribute('data-scs') || '{}';
try {
return JSON.parse(raw);
} catch (error) {
return null;
}
}
function setBusy(button, busy) {
button.disabled = !!busy;
button.setAttribute('data-loading', busy ? '1' : '0');
}
document.addEventListener('click', function (event) {
var button = event.target.closest('.scs-checkout-button');
if (!button) {
return;
}
event.preventDefault();
if (button.getAttribute('data-loading') === '1') {
return;
}
var payload = parsePayload(button);
if (!payload || !payload.nonce) {
alert((window.scs_ajax && scs_ajax.error_text) || 'Unable to start payment.');
return;
}
setBusy(button, true);
var formData = new FormData();
formData.append('action', 'scs_create_session');
formData.append('nonce', payload.nonce);
formData.append('payload', JSON.stringify(payload));
var ajaxUrl = (window.scs_ajax && scs_ajax.ajax_url) || '';
fetch(ajaxUrl, {
method: 'POST',
credentials: 'same-origin',
body: formData
})
.then(function (response) {
return response.json();
})
.then(function (data) {
if (data && data.success && data.data && data.data.url) {
window.location.href = data.data.url;
return;
}
var message = (data && data.data && data.data.message)
? data.data.message
: ((window.scs_ajax && scs_ajax.error_text) || 'Unable to start payment.');
alert(message);
})
.catch(function () {
alert((window.scs_ajax && scs_ajax.error_text) || 'Unable to start payment.');
})
.finally(function () {
setBusy(button, false);
});
});
})();