EventCheckout para um ou mais ingressos de um evento, captura a identidade do comprador, aplica opcionalmente um cupom de desconto e reserva o estoque. O checkout é criado com status PENDING e permanece pagável por 20 minutos (após isso transita para EXPIRED). Se o total final ficar abaixo de um centavo (por exemplo, com um cupom de 100%), o checkout é promovido automaticamente para FREE e os e-mails de confirmação são disparados.
O estoque é reservado contabilizando checkouts em PENDING/PAID/FREE contra a quantity do EventTicket — checkouts PENDING com mais de 16 minutos são expirados automaticamente antes da contagem.
Pré-requisitos
- O evento deve existir e ser acessível pelo contexto público.
- Cada id de ingresso enviado deve pertencer ao mesmo evento da URL.
- Para cada id de ingresso solicitado,
quantity_availabledeve cobrir a quantidade pedida, caso contrário um400é retornado. - Todas as
questionsconfiguradas no ingresso devem ser respondidas, com valores compatíveis com o tipo declarado (LIST,RADIO,STRING,INTEGER,DATE,EMAIL,PHONE,CPF). - Se
coupon_codefor informado, deve corresponder a um cupom do evento (case-insensitive — códigos são convertidos para maiúsculas no servidor).
Parâmetros de caminho
Evento ao qual o checkout pertence.
Corpo da requisição
Identidade do comprador.
Uma entrada por ingresso individual sendo comprado (repita o mesmo
ticket id para comprar várias unidades do mesmo tipo).Opcional. É feito trim e conversão para maiúsculas antes da consulta.
Resposta
201 Created com o resumo do checkout.
Use este id para acionar os endpoints de pagamento (
pay, payment_details, tickets).PENDING (pendente) para eventos pagos, FREE (gratuito) quando o total com desconto chega a zero.Valor final a ser pago, em centavos de BRL.
Soma dos
ticket.amount antes do desconto, em centavos de BRL.Desconto aplicado, em centavos de BRL.
Eco dos dados do comprador enviados.
Cada entrada:
id (id do ingresso do checkout), ticket (id do tipo de ingresso), question_answers.Ações relacionadas no mesmo recurso
Estas rotas adicionais também são públicas:GET /event/event/{event_id}/checkout/{checkout_id}/— retorna dados de pagamento: status, totais, resumo dos ingressos epayment_plan(allowPix,allowCreditCard,maxInstallments,maxInstallmentsWithoutInterest). Expira o checkout automaticamente se a janela de 20 minutos já tiver passado.POST /event/event/{event_id}/checkout/{checkout_id}/pay/— envia os dados de pagamento (cartão ou PIX) e cria a transação subjacente. O corpo reutiliza o comprador capturado na criação. Retorna opayment_infodo gateway (por exemplo, QR Code PIX, desafio 3DS). Retorna400se o checkout não estiver pagável.POST /event/event/{event_id}/checkout/validate-coupon/— corpo{"code": "..."}. Retorna{valid, coupon:{id,name,code,type,value}}ou{valid: false, error}.GET /event/event/{event_id}/checkout/{checkout_id}/tickets/— quando o checkout está pago, faz streaming de um PDF com os ingressos adquiridos. Caso contrário, renderiza uma página HTML de “não pago”.
Erros
| Status | Quando |
|---|---|
400 | Falha de validação: campos faltando, telefone inválido, ingresso de outro evento, ingresso esgotado, pergunta não respondida, cupom inválido, respostas ausentes. |