const checkout = await Purse.createHeadlessCheckout('your-session-data', {
onBeforeValidate: async (splits) => {
if (!document.querySelector('#terms').checked) {
throw new Error('Please accept terms and conditions');
}
document.querySelector('#pay-button').disabled = true;
document.querySelector('#loader').classList.remove('hidden');
gtag('event', 'begin_checkout', {
value: splits.reduce((sum, s) => sum + s.amount, 0) / 100
});
},
onAfterValidate: async () => {
document.querySelector('#loader').classList.add('hidden');
gtag('event', 'purchase');
},
redirectionHandler: async ({ url, type, method, JSONPayload }) => {
if (type === 'jsonFormSubmit') {
const form = document.createElement('form');
form.method = method;
form.action = url;
const data = JSON.parse(JSONPayload || '{}');
Object.entries(data).forEach(([key, value]) => {
const input = document.createElement('input');
input.type = 'hidden';
input.name = key;
input.value = String(value);
form.appendChild(input);
});
document.body.appendChild(form);
form.submit();
}
}
}
);