O checkout informa à sua página o que está fazendo. Assine com on():
entase.on('checkout.ready', payload => {
console.log('checkout open for', payload.context.eventID);
});Um listener por nome de evento
on() armazena um callback por nome de evento. Registrar um segundo callback para o mesmo nome substitui o primeiro – ele não é adicionado a ele:
entase.on('checkout.closed', a);
entase.on('checkout.closed', b); // a foi removido; apenas b é executadooff() remove o que estiver registrado para um nome. Ele ignora qualquer callback que você passar, portanto off('checkout.closed', b) e off('checkout.closed') fazem a mesma coisa.
Se várias partes da sua página precisarem reagir ao mesmo evento, registre um callback e distribua as chamadas dentro dele.
Assinar vários eventos de uma vez
Ambos os métodos aceitam uma string separada por espaços ou uma matriz de nomes, registrando o mesmo callback para cada um:
entase.on('checkout.ready checkout.closed', payload => {
console.log(payload.name);
});
entase.off(['checkout.ready', 'checkout.closed']);O payload
Cada callback recebe um objeto:
| Campo | Tipo | Descrição |
|---|---|---|
name | string | O nome do evento, útil quando um callback trata vários eventos. |
context | object | Contém eventID – o evento ao qual este checkout pertence. |
data | object | Detalhe específico do evento. |
Eventos disponíveis
| Nome | Quando é disparado |
|---|---|
checkout.ready | O checkout foi carregado e está pronto para interação. É também quando o cliente repassa o clientContext que você passou para book(). |
checkout.closed | O checkout foi fechado. O cliente desmonta o painel ou a janela e remove o fundo. |
checkout.consent | O visitante respondeu ao aviso dos termos. data.consent é true quando ele aceita, e o cliente registra essa escolha para que essa etapa seja ignorada na próxima vez. |
entase.on('checkout.closed', () => {
document.body.classList.remove('checkout-open');
});
entase.on('checkout.consent', payload => {
if (payload.data.consent) console.log('terms accepted');
});Os listeners persistem entre reservas individuais
Os listeners pertencem à instância, não a uma reserva. Registre-os uma vez, após criar o cliente, e eles se aplicam a todas as chamadas de book(). Use payload.context.eventID para diferenciar as reservas:
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });
entase.on('checkout.closed', payload => {
refreshAvailability(payload.context.eventID);
});Chamar destroy() interrompe todos eles – a instância deixa de escutar completamente as mensagens do checkout.
Mensagens de outras fontes são ignoradas
O cliente aceita apenas mensagens da origem do checkout da Entase, portanto tráfego postMessage não relacionado na sua página nunca chegará aos seus callbacks.