Não existe ambiente de testes separado#
Atenção As chaves
pk_test_funcionam como as de produção. Um checkout de cartão pago cobra o cartão de verdade, um Pix pago cai na sua conta e um saque transfere dinheiro de verdade.
Criar uma cobrança ou um checkout não cobra nada. Só o pagamento cobra. Um checkout que ninguém paga vira expired em 24 horas, sem custo.
Pagar com valor baixo#
- Pix: a partir de R$ 1,00, pago com a sua própria conta.
- Cartão: um valor pouco acima do mínimo, com o seu próprio cartão. O mínimo varia com a moeda e com a cotação do dia; algumas adquirentes têm mínimo maior. Na dúvida, mande menos de propósito: a resposta diz o mínimo na sua moeda.
- Estorno do teste: não é feito pela API. Fale com o suporte do Throne.
Não faça testes de recusa em série, com vários cartões inventados no mesmo checkout. Isso parece teste de cartão e pode bloquear as tentativas daquele comprador.
Ver o checkout em outro idioma#
O checkout sai no idioma do país do comprador, identificado pelo IP. Na NovaCorp, na Eminence, na Apex, na ShadowBank e na Vortex, para ver como um comprador de outro país enxerga a página, abra o checkout_url da resposta com ?nl= e o código do idioma:
<checkout_url>?nl=deSe o endereço já tiver ?, use &nl=de. O formulário, os números e as telas de espera saem nesse idioma; a tela do próprio banco, quando ele pede verificação, segue o banco. Códigos aceitos: en, pt, es, fr, de, it, nl, pl, sv, da, no, fi, cs, sk, ro, hu, el, tr, ru, uk, bg, hr, ja, ko, zh, ar, he, th, id e vi.
Na Sterling e na Imperium o idioma segue só o IP. Para conferir, use uma conexão do país do comprador.
No Checkout Brasil, a página sai sempre em português, e o ?nl= não muda isso.
Ver o Checkout Brasil sem pagar#
Abra no navegador o checkout_url da resposta do POST /elements/checkout/br para ver a página como o comprador vê: em português, com o campo CPF e com o botão e a moldura que você pediu em appearance. Nada é cobrado enquanto ninguém clica em pagar.
Provocar erros de propósito#
Todos os casos abaixo voltam sem criar nada e sem cobrar. Use para conferir se a sua integração mostra a mensagem certa e não fica repetindo a chamada.
| Para ver | Envie em POST /elements/checkout |
Resposta |
|---|---|---|
| Valor abaixo do mínimo | "amount_cents": 50, "currency": "usd" |
422 invalid_amount, com o mínimo na sua moeda |
| Valor acima do máximo | Um valor acima do max_amount_cents que GET /elements/acquirers?currency=... mostra, com o acquirer dessa adquirente |
422 invalid_amount, com max_amount_cents e alternatives |
| Moeda fora da lista | "currency": "xyz" |
422 currency_not_supported |
| Adquirente desconhecida | "acquirer": "teste" |
422 invalid_acquirer |
| Adquirente não habilitada | acquirer com uma adquirente que não aparece em GET /elements/acquirers |
422 acquirer_not_enabled |
| Nome ou e-mail do comprador faltando (ShadowBank) | "acquirer": "shadowbank" sem customer, com a ShadowBank habilitada na conta |
422 customer_required_for_shadowbank |
| Nome ou e-mail do comprador faltando (Vortex) | "acquirer": "vortex" sem customer, com a Vortex habilitada na conta |
422 customer_required_for_vortex |
| Falta da chave de idempotência | A chamada sem o header Idempotency-Key |
400 idempotency_key_required |
| Chave de API errada | Authorization: Bearer pk_x:sk_x |
401 unauthorized |
| Corpo trocado | A mesma Idempotency-Key de uma chamada anterior, com outro corpo |
422 idempotency_key_mismatch |
No POST /elements/checkout/br, também sem custo:
| Para ver | Envie | Resposta |
|---|---|---|
| Campo que não existe no Checkout Brasil | "one_click_from": "a1b2c3d4-e5f6-4789-abcd-ef0123456789" |
422 field_not_supported |
| Aparência fora da regra | "appearance": { "button": { "text": "Pague R$ 9,90" } } |
422 invalid_appearance, com field |
E um caso que dá certo, para ver a repetição segura: mande a mesma criação duas vezes, com a mesma Idempotency-Key e o mesmo corpo. A segunda resposta é igual à primeira e traz o header Idempotent-Replay: true. Só um checkout existe.
Exemplo do valor abaixo do mínimo:
curl -X POST https://app.thronecorporate.com/api/v1/elements/checkout \
-H "Authorization: Bearer $THRONE_PK:$THRONE_SK" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "amount_cents": 50, "currency": "usd" }'{ "error": "invalid_amount", "message": "Valor abaixo do mínimo aceito: $ 0,95." }O valor do mínimo muda com a cotação do dia.
Testar o webhook#
- No painel, em Webhooks, o botão de teste envia um
test.pingassinado, igual aos eventos de verdade. - O histórico fica em Entregas de webhook, com o status que o seu servidor respondeu.
- Para ver um
transaction.paidde verdade, pague um valor baixo. Confira a assinatura como em Webhooks.
Conferir as chamadas no painel#
No painel, em Documentação da API, a lista Últimas chamadas da API mostra as criações de cobrança e de checkout que chegaram ao endpoint, com sucesso ou com falha, com o status e, no cartão, o código de erro.
Nem toda resposta entra na lista. Os erros de autenticação (401), de permissão (403 scope_required), de limite de requisições (429) e os da Idempotency-Key que o Throne confere antes do endpoint (400 idempotency_key_required, 422 idempotency_key_mismatch, 409 idempotency_key_processing e 409 idempotency_key_race) não aparecem. No Pix, os erros de validação do corpo também não. Por isso, três casos da tabela acima (sem Idempotency-Key, chave de API errada e corpo trocado) não aparecem no painel: confira esses pela resposta que o seu servidor recebeu.
Próximo passo#
Siga o Checklist de verificação antes de abrir as vendas.