first commit
This commit is contained in:
69
assets/scs-checkout.js
Normal file
69
assets/scs-checkout.js
Normal 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);
|
||||
});
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user