Sandbox
Toda chave sk_test_... opera em modo sandbox: nenhum dinheiro real se move, e o comportamento
de um pagamento pode ser forçado de forma determinística através de convenções no cardToken.
Uma chave sk_live_... nunca interpreta essas convenções — o valor decisivo é sempre
apiKey.environment, resolvido no servidor a partir da própria chave, nunca de um campo que o
caller controle.
Cartão
O último dígito relevante é sempre o final do cardToken (não é preciso tokenizar de
verdade em sandbox — passe qualquer string terminada no sufixo desejado, ex.: tok_test_0000):
cardToken terminado em | Resultado |
|---|---|
0000 | Recusado (declined) — resposta imediata. |
0002 | Timeout — a chamada expira (504 PROVIDER_TIMEOUT), como se o provider nunca tivesse respondido. |
| qualquer outro | Aprovado. |
curl -X POST https://api.gateway.example/v1/payments \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"amountInCents": 5000,
"method": "credit_card",
"cardToken": "tok_test_0002"
}'
{
"error": {
"code": "PROVIDER_TIMEOUT",
"message": "Provider operation timed out after 15000ms.",
"correlationId": "..."
}
}
PIX e boleto
Uma cobrança PIX/boleto criada em sandbox nasce pending_payment, exatamente como em
produção — não há hoje um valor mágico público pra forçá-la a paid via /v1/pix/charges ou
/v1/boletos.
Confirmar manualmente um PIX/boleto de sandbox como pago ainda depende de um callback real do provider (ou de quem opera sua instância simular um via o mecanismo interno de callback) — não existe, nesta entrega, um endpoint público de "marcar como pago" pra teste. Planeje seus testes automatizados em torno do fluxo de cartão (que confirma na hora) quando precisar de um teste determinístico de ponta a ponta.
Autorizar/capturar (cartão)
O fluxo em duas etapas (capture: false → POST /:id/capture) funciona igual em sandbox —
use as mesmas convenções de cardToken acima em qualquer uma das duas etapas.