Public Checkout
Rotas públicas usadas pelo checkout hospedado (sem API key): ler a sessão, registrar os dados do comprador (etapa 1), pagar, simular o Pix e abrir um Payment Link.
- get
/v1/public/checkout-sessions/{id}— Ler sessão pública (polling) - post
/v1/public/checkout-sessions/{id}/lead— Registrar os dados do comprador (etapa 1) - post
/v1/public/checkout-sessions/{id}/pay— Pagar sessão de checkout - post
/v1/public/checkout-sessions/{id}/pix/simulate-payment— Simular pagamento do Pix da sessão - post
/v1/public/checkout-sessions/{id}/reconcile— Reconciliar pagamento da sessão - get
/v1/public/payment-links/{id}/session— Abrir sessão de um Payment Link
/v1/public/checkout-sessions/{id}Ler sessão pública (polling) (getPublicCheckoutSession)
Visão do comprador: nome público do seller, produto e descrição, suporte e garantia do produtor (guarantee_days), métodos aceitos pela oferta, valor, estado da sessão e do pagamento atual. access_links (links de entrega com o domínio) vem preenchido só depois do pagamento aprovado; antes é null. bumps lista os order bumps ativos da oferta (vazio com CHECKOUT_BUMPS_ENABLED desligado) e, depois da primeira tentativa de pagamento, order traz o pedido com seus itens e selected_bump_ids a seleção fixada. Nunca o id do seller. Sessão vencida responde 200 com status: "expired"; segredo errado → 404.
- Autenticação: pública (sem
Authorization) - URL:
https://api.v2.wolfpayteste.online/v1/public/checkout-sessions/{id}
Parâmetros
| Nome | Onde | Tipo | Detalhes |
|---|---|---|---|
idobrigatório | caminho | string | Id da sessão ( mínimo 1 caractere(s) |
x-checkout-secretobrigatório | cabeçalho | string |
Começa com |
Resposta 200
Sessão.
Objeto PublicCheckoutSession
| Campo | Tipo | Detalhes |
|---|---|---|
id obrigatório | string | Começa com |
offer_id obrigatório | string | Começa com |
amount_minor obrigatório | string | |
currency obrigatório | string | Padrão |
status obrigatório | string | Valores: |
payment_intent_id obrigatório | string | null | |
expires_at obrigatório | string | |
seller obrigatório | object | |
seller.display_name obrigatório | string | mínimo 1 caractere(s) |
product obrigatório | object | |
product.name obrigatório | string | mínimo 1 caractere(s) |
product.description obrigatório | string | null | |
support obrigatório | object | null | |
support.name obrigatório | string | null | |
support.email obrigatório | string | null | |
support.whatsapp obrigatório | string | null | |
guarantee_days obrigatório | integer | de 0 a 30 |
accepted_methods obrigatório | string[] | Valores: 1 a 2 itens |
access_links obrigatório | object[] | null | |
access_links.label obrigatório | string | |
access_links.url obrigatório | string | |
access_links.host obrigatório | string | |
payment obrigatório | CheckoutPayment | null | |
bumps obrigatório | object[] | |
bumps[].id obrigatório | string | Padrão |
bumps[].headline obrigatório | string | |
bumps[].description obrigatório | string | |
bumps[].product_name obrigatório | string | |
bumps[].amount_minor obrigatório | string | |
bumps[].currency obrigatório | string | Padrão |
order obrigatório | object | null | |
order.id obrigatório | string | Começa com |
order.amount_minor obrigatório | string | |
order.currency obrigatório | string | Padrão |
order.items obrigatório | object[] | |
order.items[].kind obrigatório | string | Valores: |
order.items[].bump_id obrigatório | string | null | |
order.items[].product_name obrigatório | string | |
order.items[].amount_minor obrigatório | string | |
order.items[].currency obrigatório | string | Padrão |
selected_bump_ids obrigatório | string[] | Padrão |
{
"id": "cs_2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f",
"offer_id": "off_1b2c3d4e5f60718293a4b5c6d7e8f901",
"amount_minor": "9900",
"currency": "BRL",
"status": "open",
"payment_intent_id": "pi_3b9f0c2d1e4a5b6c7d8e9f0a1b2c3d4e",
"expires_at": "2026-11-06T12:30:00.000Z",
"seller": {
"display_name": "Estúdio Exemplo"
},
"product": {
"name": "Curso de fotografia",
"description": "Do básico à edição: 40 aulas gravadas e exercícios práticos."
},
"support": {
"name": "Equipe Estúdio Exemplo",
"email": "suporte@example.com",
"whatsapp": "+5511912345678"
},
"guarantee_days": 7,
"accepted_methods": [
"pix",
"card"
],
"access_links": null,
"payment": {
"id": "pi_3b9f0c2d1e4a5b6c7d8e9f0a1b2c3d4e",
"order_id": "ord_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"status": "processing",
"amount_minor": "12600",
"currency": "BRL",
"failure_code": null,
"next_action": {
"type": "pix_qr",
"qr_code_payload": "00020101021226780014br.gov.bcb.pix0120SIMULADO-NAO-PAGAVEL0232SIMULADO - NENHUMA COBRANCA REAL520400005303986540599.005802BR5921WOLF SANDBOX SIMULADO6009SAO PAULO62290525SIMULADO3b9f0c2d1e4a5b6c76304726B",
"expires_at": "2026-11-06T12:30:00.000Z"
},
"cancellation_reason": null
},
"bumps": [
{
"id": "ob_7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a",
"headline": "Adicionar à compra: Guia bônus",
"description": "Checklist em PDF com 40 poses para ensaios.",
"product_name": "Guia bônus de poses",
"amount_minor": "2700",
"currency": "BRL"
}
],
"order": {
"id": "ord_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"amount_minor": "12600",
"currency": "BRL",
"items": [
{
"kind": "main",
"bump_id": null,
"product_name": "Curso de fotografia",
"amount_minor": "9900",
"currency": "BRL"
},
{
"kind": "bump",
"bump_id": "ob_7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a",
"product_name": "Guia bônus de poses",
"amount_minor": "2700",
"currency": "BRL"
}
]
},
"selected_bump_ids": [
"ob_7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a"
]
}Erros
- 400 —
VALIDATION_FAILED - 404 —
RESOURCE_NOT_FOUND - 500 —
INTERNAL_ERROR
/v1/public/checkout-sessions/{id}/leadRegistrar os dados do comprador (etapa 1) (captureCheckoutLead)
Chamado pelo servidor do checkout hospedado quando o comprador conclui a etapa 1 (dados), que mostra o aviso "Usaremos seu e-mail e telefone para te ajudar a concluir a compra.". Um registro por sessão: repetir atualiza os dados. Só uma sessão aberta aceita (concluída → 409 INVALID_STATE_TRANSITION; expirada → 400). O telefone é opcional e só do Brasil (DDD + número); é guardado em E.164. A resposta nunca devolve os dados. Limitado pelo escopo checkout_pay (sessão + IP); não exige o Turnstile, que continua no pagamento. Os dados valem para a recuperação da venda por 30 dias e depois são anonimizados; nunca vão para webhooks.
- Autenticação: pública (sem
Authorization) - URL:
https://api.v2.wolfpayteste.online/v1/public/checkout-sessions/{id}/lead
Parâmetros
| Nome | Onde | Tipo | Detalhes |
|---|---|---|---|
idobrigatório | caminho | string | Id da sessão ( mínimo 1 caractere(s) |
Corpo da requisição
Objeto CaptureCheckoutLeadRequest
| Campo | Tipo | Detalhes |
|---|---|---|
client_secret obrigatório | string | Começa com |
name obrigatório | string | 2 a 160 caracteres |
email obrigatório | string (e-mail) | Padrão até 254 caracteres |
phone | string | Padrão 8 a 32 caracteres |
{
"client_secret": "csec_EXEMPLO_segredo_de_uso_unico_da_sessao",
"name": "Ana Compradora",
"email": "ana@example.com",
"phone": "(11) 98765-4321"
}Resposta 200
Dados registrados.
Objeto CapturedCheckoutLead
| Campo | Tipo | Detalhes |
|---|---|---|
checkout_session_id obrigatório | string | Começa com |
captured obrigatório | true |
{
"checkout_session_id": "cs_2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f",
"captured": true
}Erros
- 400 —
VALIDATION_FAILED - 404 —
RESOURCE_NOT_FOUND - 409 —
INVALID_STATE_TRANSITION - 429 —
RATE_LIMITED - 500 —
INTERNAL_ERROR
/v1/public/checkout-sessions/{id}/payPagar sessão de checkout (payCheckoutSession)
Cria o pedido da oferta (uma vez por sessão) e o PaymentIntent com o pagador e confirma com o método escolhido. Pix responde 202 com o QR sintético; cartão de teste aprovado responde 200; recusa → 402. A resposta é a visão do comprador (sem pagador nem ids do provedor). Método fora dos accepted_methods da oferta → 409 PAYMENT_METHOD_NOT_ACCEPTED, antes de criar pedido ou pagamento. Com o Pix desligado no ambiente (kill switch PIX_SIMULATION_ENABLED) → 409 PAYMENT_METHOD_UNAVAILABLE; cartão de teste não é afetado. bump_ids (opcional) são order bumps da sessão (bumps da leitura pública): o servidor valida e precifica, e o PaymentIntent tem o valor total do pedido. Bump inválido, inativo, repetido ou de outra oferta → 409 BUMP_NOT_AVAILABLE, sem cobrança. A primeira tentativa fixa os itens do pedido: tentativas seguintes repetem a mesma seleção (selected_bump_ids); outra seleção → 409 IDEMPOTENCY_CONFLICT, sem cobrança.
- Autenticação: pública (sem
Authorization) - URL:
https://api.v2.wolfpayteste.online/v1/public/checkout-sessions/{id}/pay
Parâmetros
| Nome | Onde | Tipo | Detalhes |
|---|---|---|---|
idobrigatório | caminho | string | Id da sessão ( mínimo 1 caractere(s) |
wolf-turnstile-token | cabeçalho | string | Token do Cloudflare Turnstile (verificação humana) obtido pelo checkout hospedado. Obrigatório quando o ambiente tem o widget configurado; ausente ou inválido → 1 a 2048 caracteres |
Idempotency-Keyobrigatório | cabeçalho | string | Chave escolhida pelo cliente (8 a 255 caracteres). Mesma chave + mesmo corpo = mesma resposta; corpo diferente = 8 a 255 caracteres |
Corpo da requisição
Objeto PayCheckoutSessionRequest
| Campo | Tipo | Detalhes |
|---|---|---|
client_secret obrigatório | string | Começa com |
payer obrigatório | PayerInput | |
payment_method obrigatório | PaymentMethod | |
bump_ids | string[] | Padrão 0 a 3 itens |
{
"client_secret": "csec_EXEMPLO_segredo_de_uso_unico_da_sessao",
"payer": {
"name": "Ana Compradora",
"email": "ana@example.com",
"phone": "(11) 98765-4321",
"document": {
"type": "cpf",
"number": "529.982.247-25"
}
},
"payment_method": {
"type": "pix"
},
"bump_ids": [
"ob_7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a"
]
}Resposta 200
Pagamento concluído.
Objeto CheckoutPayment
| Campo | Tipo | Detalhes |
|---|---|---|
id obrigatório | string | Começa com |
order_id obrigatório | string | null | |
status obrigatório | string | Valores: |
amount_minor obrigatório | string | |
currency obrigatório | string | Padrão |
failure_code obrigatório | string | null | |
next_action obrigatório | PaymentNextAction | null | |
cancellation_reason obrigatório | string | null |
{
"id": "pi_3b9f0c2d1e4a5b6c7d8e9f0a1b2c3d4e",
"order_id": "ord_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"status": "succeeded",
"amount_minor": "9900",
"currency": "BRL",
"failure_code": null,
"next_action": null,
"cancellation_reason": null
}Resposta 202
Pagamento em processamento (Pix aguardando ou cartão em reconciliação).
Objeto CheckoutPayment
| Campo | Tipo | Detalhes |
|---|---|---|
id obrigatório | string | Começa com |
order_id obrigatório | string | null | |
status obrigatório | string | Valores: |
amount_minor obrigatório | string | |
currency obrigatório | string | Padrão |
failure_code obrigatório | string | null | |
next_action obrigatório | PaymentNextAction | null | |
cancellation_reason obrigatório | string | null |
{
"id": "pi_3b9f0c2d1e4a5b6c7d8e9f0a1b2c3d4e",
"order_id": "ord_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"status": "processing",
"amount_minor": "9900",
"currency": "BRL",
"failure_code": null,
"next_action": {
"type": "pix_qr",
"qr_code_payload": "00020101021226780014br.gov.bcb.pix0120SIMULADO-NAO-PAGAVEL0232SIMULADO - NENHUMA COBRANCA REAL520400005303986540599.005802BR5921WOLF SANDBOX SIMULADO6009SAO PAULO62290525SIMULADO3b9f0c2d1e4a5b6c76304726B",
"expires_at": "2026-11-06T12:30:00.000Z"
},
"cancellation_reason": null
}Erros
- 400 —
IDEMPOTENCY_KEY_REQUIRED,VALIDATION_FAILED - 402 —
PAYMENT_DECLINED - 403 —
CAPTCHA_REQUIRED - 404 —
RESOURCE_NOT_FOUND - 409 —
BUMP_NOT_AVAILABLE,IDEMPOTENCY_CONFLICT,INVALID_STATE_TRANSITION,PAYMENT_LIMIT_EXCEEDED,PAYMENT_METHOD_NOT_ACCEPTED,PAYMENT_METHOD_UNAVAILABLE - 429 —
RATE_LIMITED - 500 —
INTERNAL_ERROR - 503 —
SERVICE_UNAVAILABLE
/v1/public/checkout-sessions/{id}/pix/simulate-paymentSimular pagamento do Pix da sessão (simulateCheckoutPixPayment)
Botão "Simular pagamento" do checkout: age só sobre o PaymentIntent da própria sessão. Repetir não faz nada. Só existe na edição de simulação. Com o Pix desligado no ambiente (kill switch PIX_SIMULATION_ENABLED) → 409 PAYMENT_METHOD_UNAVAILABLE, antes da verificação do Turnstile.
- Autenticação: pública (sem
Authorization) - URL:
https://api.v2.wolfpayteste.online/v1/public/checkout-sessions/{id}/pix/simulate-payment
Parâmetros
| Nome | Onde | Tipo | Detalhes |
|---|---|---|---|
idobrigatório | caminho | string | Id da sessão ( mínimo 1 caractere(s) |
wolf-turnstile-token | cabeçalho | string | Token do Cloudflare Turnstile (verificação humana) obtido pelo checkout hospedado. Obrigatório quando o ambiente tem o widget configurado; ausente ou inválido → 1 a 2048 caracteres |
Corpo da requisição
Objeto CheckoutSessionSecretRequest
| Campo | Tipo | Detalhes |
|---|---|---|
client_secret obrigatório | string | Começa com |
{
"client_secret": "csec_EXEMPLO_segredo_de_uso_unico_da_sessao"
}Resposta 200
Pagamento após a simulação.
Objeto CheckoutPayment
| Campo | Tipo | Detalhes |
|---|---|---|
id obrigatório | string | Começa com |
order_id obrigatório | string | null | |
status obrigatório | string | Valores: |
amount_minor obrigatório | string | |
currency obrigatório | string | Padrão |
failure_code obrigatório | string | null | |
next_action obrigatório | PaymentNextAction | null | |
cancellation_reason obrigatório | string | null |
{
"id": "pi_3b9f0c2d1e4a5b6c7d8e9f0a1b2c3d4e",
"order_id": "ord_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"status": "succeeded",
"amount_minor": "9900",
"currency": "BRL",
"failure_code": null,
"next_action": null,
"cancellation_reason": null
}Erros
- 400 —
VALIDATION_FAILED - 403 —
CAPTCHA_REQUIRED - 404 —
RESOURCE_NOT_FOUND - 409 —
INVALID_STATE_TRANSITION,PAYMENT_METHOD_UNAVAILABLE - 429 —
RATE_LIMITED - 500 —
INTERNAL_ERROR - 503 —
SERVICE_UNAVAILABLE
/v1/public/checkout-sessions/{id}/reconcileReconciliar pagamento da sessão (reconcileCheckoutSession)
Consulta o provedor simulado pelo pagamento da sessão em estado desconhecido. Só existe na edição de simulação.
- Autenticação: pública (sem
Authorization) - URL:
https://api.v2.wolfpayteste.online/v1/public/checkout-sessions/{id}/reconcile
Parâmetros
| Nome | Onde | Tipo | Detalhes |
|---|---|---|---|
idobrigatório | caminho | string | Id da sessão ( mínimo 1 caractere(s) |
Corpo da requisição
Objeto CheckoutSessionSecretRequest
| Campo | Tipo | Detalhes |
|---|---|---|
client_secret obrigatório | string | Começa com |
{
"client_secret": "csec_EXEMPLO_segredo_de_uso_unico_da_sessao"
}Resposta 200
Resultado definitivo.
Objeto CheckoutPayment
| Campo | Tipo | Detalhes |
|---|---|---|
id obrigatório | string | Começa com |
order_id obrigatório | string | null | |
status obrigatório | string | Valores: |
amount_minor obrigatório | string | |
currency obrigatório | string | Padrão |
failure_code obrigatório | string | null | |
next_action obrigatório | PaymentNextAction | null | |
cancellation_reason obrigatório | string | null |
Resposta 202
Ainda sem resultado definitivo.
Objeto CheckoutPayment
| Campo | Tipo | Detalhes |
|---|---|---|
id obrigatório | string | Começa com |
order_id obrigatório | string | null | |
status obrigatório | string | Valores: |
amount_minor obrigatório | string | |
currency obrigatório | string | Padrão |
failure_code obrigatório | string | null | |
next_action obrigatório | PaymentNextAction | null | |
cancellation_reason obrigatório | string | null |
Erros
- 400 —
VALIDATION_FAILED - 402 —
PAYMENT_DECLINED - 404 —
RESOURCE_NOT_FOUND - 429 —
RATE_LIMITED - 500 —
INTERNAL_ERROR
/v1/public/payment-links/{id}/sessionAbrir sessão de um Payment Link (openPaymentLinkSession)
Chamado pelo servidor do checkout hospedado: cria uma sessão para um link active de seller e oferta ativos e devolve o segredo de uso único da sessão. Link inexistente, inativo ou de seller/oferta inativos → 404 (sem dizer qual). Limitado por IP e verificado pelo Turnstile (quando o ambiente tem o widget) antes de qualquer consulta. Com os Payment Links desligados no ambiente (kill switch PAYMENT_LINKS_ENABLED) → 404, antes de qualquer outra verificação.
- Autenticação: pública (sem
Authorization) - URL:
https://api.v2.wolfpayteste.online/v1/public/payment-links/{id}/session
Parâmetros
| Nome | Onde | Tipo | Detalhes |
|---|---|---|---|
idobrigatório | caminho | string | Id do Payment Link ( mínimo 1 caractere(s) |
wolf-turnstile-token | cabeçalho | string | Token do Cloudflare Turnstile (verificação humana) obtido pelo checkout hospedado. Obrigatório quando o ambiente tem o widget configurado; ausente ou inválido → 1 a 2048 caracteres |
Resposta 201
Sessão aberta.
Objeto OpenedPaymentLinkSession
| Campo | Tipo | Detalhes |
|---|---|---|
checkout_session_id obrigatório | string | Começa com |
client_secret obrigatório | string | Começa com |
expires_at obrigatório | string |
{
"checkout_session_id": "cs_2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f",
"client_secret": "csec_EXEMPLO_segredo_de_uso_unico_da_sessao",
"expires_at": "2026-11-06T13:00:00.000Z"
}Erros
- 403 —
CAPTCHA_REQUIRED - 404 —
RESOURCE_NOT_FOUND - 429 —
RATE_LIMITED - 500 —
INTERNAL_ERROR - 503 —
SERVICE_UNAVAILABLE