Evento checkout.session.completed
Disparado quando o comprador conclui o confirm da checkout session na página
hospedada ou em um frontend custom. data.object contém a sessão completa já
com o customer resolvido e, quando houver pagamento, com payment_data
preenchido para o método escolhido.
Use este evento para marcar que a sessão foi finalizada pelo comprador. Para
cartão aprovado de forma síncrona, ele já pode indicar pagamento confirmado.
Para PIX e boleto, completed significa que o comprador recebeu as instruções
de pagamento; a confirmação financeira chega depois por
checkout.session.async.payment.succeeded.
Webhooks devem ser a fonte confiável para liberar produto, serviço ou acesso.
Leia sempre
payment_status junto com payment_data.payment_method antes de
concluir a entrega.No checkout hospedado, a primeira tentativa deste evento é imediata. A
Chargefy aguarda um
2xx por até 10 segundos antes de redirecionar para a
success_url; sem confirmação, libera o redirect e mantém o evento na fila
para novas tentativas. Persista e deduplique o evento antes de responder
2xx.Quando acontece
Como processar
- Registre o
iddo evento (evt_*) para processar o webhook de forma idempotente. - Use
data.object.idcomo chave da checkout session no seu sistema. - Salve
data.object.customer, que é resolvido noconfirme aparece preenchido deste evento em diante. - Para
payment_status: "paid", marque o pedido como pago e libere o produto ou serviço. - Para
payment_status: "unpaid"compixouboleto, marque o pedido como aguardando pagamento e espere o evento assíncrono de sucesso. - Para
payment_status: "no_payment_required", conclua o fluxo sem cobrança imediata conforme a regra da sessão.
Campos importantes
Variações de pagamento
Exemplo de payload
data.object.payment_data traz os campos do método (PIX QR, boleto barcode ou
parcelas do cartão). Veja
POST .../confirm para
cada variante.
