Visão geral
O Checkout Session é o modelo recomendado quando o pagamento é iniciado no frontend (browser, app mobile). Em vez de expor suaX-API-Key no cliente, o fluxo funciona em duas etapas:
- Backend cria uma sessão com
X-Client-ID+X-API-Key— recebe um token de curta duração - Frontend usa esse token para submeter o pagamento — sem contato com a API key
amount, currency e merchant_order_id são travados na sessão pelo backend — o frontend não pode alterá-los, o que elimina a possibilidade de manipulação de preço pelo cliente.
Criar sessão
POST /api/v1/checkout/sessions — requer X-Client-ID + X-API-Key. Chamada exclusivamente pelo backend da empresa.
success_url e cancel_url passam por validação SSRF: IPs privados e intervalos reservados (10.x, 192.168.x, 127.x) são rejeitados com 422.201:
saved_cards é preenchido quando o campo customer é informado e o cliente possui cartões salvos. Use-o para exibir uma lista de cartões ao usuário sem que o frontend precise consultar outra rota.
Submeter pagamento
O token recebido na criação da sessão é enviado no headerX-Checkout-Token. Ele é de uso único — ao iniciar uma tentativa de pagamento, a sessão é marcada como usada e não pode ser reutilizada, mesmo que a cobrança falhe.
Cartão
POST /api/v1/checkout/payments/card — requer X-Checkout-Token.
saved_cards):
Ao usar um cartão salvo,
billing_address e os dados do titular não são necessários — eles já estão no vault.PIX
POST /api/v1/checkout/payments/pix — requer X-Checkout-Token.
payment_method não é necessário no PIX via checkout — a rota já define o método. O amount, currency e merchant_order_id são injetados automaticamente da sessão.