Testar em sandbox sem gastar créditos
Sandbox é um modo por aplicação em que todos os fornecedores são simulados, nada é faturado e podes forçar qualquer resultado de verificação que precises - aprovada, recusada ou em revisão.
Sandbox é um modo numa aplicação, não um interruptor dentro da tua aplicação em produção. Cria uma segunda aplicação em modo sandbox, usa a sua chave de API, e todas as comprovações são simuladas, nada é faturado e podes forçar o resultado que quiseres. Se só vês uma aplicação de produção, precisas de criar a de sandbox - o modo é escolhido por aplicação.
O sandbox da Didit é o equivalente aos cartões de teste de um fornecedor de pagamentos: permite-te reproduzir qualquer resultado de verificação a pedido, sem chamar fornecedores reais, sem lidar com dados pessoais reais e sem tocar no teu saldo.
#O sandbox é um modo numa aplicação
Esta é a parte que costuma confundir a maioria das pessoas. Live e sandbox são aplicações separadas dentro da mesma organização, por isso o tráfego de teste e os dados de produção nunca se misturam. Cada aplicação tem um modo, live ou sandbox.

- Uma chave pertence a uma aplicação - a chave da aplicação sandbox não consegue tocar em sessões live.
- Cria uma chave separada para testes em vez de reutilizar a de produção.
- Cria uma segunda aplicação
Na consola, abre o seletor de aplicações no topo e cria uma aplicação nova. Escolhe sandbox como modo.
- Usa a chave de API dessa aplicação
Vai buscar a chave de API a API e Webhooks com a aplicação sandbox selecionada. Não existe uma "chave de teste" separada numa aplicação em produção - a chave é o ambiente.
- Cria um fluxo de trabalho nela
As aplicações sandbox têm os seus próprios fluxos de trabalho. Recria (ou copia) o fluxo que queres testar.
- Cria sessões normalmente
O mesmo endpoint, o mesmo caminho de código. A única diferença é qual chave envias.
Se a tua consola só mostra uma aplicação de produção e nenhuma forma de adicionar uma sandbox, pede ao suporte para ativar a criação de aplicações sandbox para a tua organização - é uma definição a nível de conta, não algo que tenhas configurado mal.
#O que o sandbox muda, e o que não muda
| Sandbox | Produção | |
|---|---|---|
| Fornecedores externos | Todos simulados - nunca é chamado nenhum terceiro | Reais |
| Faturação | Nunca faturado; a verificação de saldo é ignorada | Faturado por funcionalidade concluída |
| Limite de criação de sessões | 500 por 24 horas, por aplicação | O teu saldo |
| Payload do webhook | "environment": "sandbox" | "environment": "live" |
| Dados extraídos e estado | Simulados pelo cenário que escolheres | Derivados da captura real |
| Media capturada | Guardada de forma real, exatamente como uma sessão em produção | Guardada |
O sandbox guarda a media que captura - documentos, selfie, vídeo de prova de vida, ficheiros de comprovativo de morada - exatamente como uma sessão em produção faria. O resultado é simulado, mas o upload é real, por isso usa os documentos de amostra e os dados de teste que o fluxo oferece em vez de um documento de identidade real ou informação pessoal real.
Como os resultados nunca dependem dos pixels, uma fotografia propositadamente má não vai gerar uma recusa em sandbox. É o cenário que decide.
#Escolher o resultado
Passa o slug de um cenário como sandbox_scenario ao criares a sessão, ou deixa o testador escolher um: as sessões sandbox no fluxo alojado mostram um seletor de cenário dentro do cartão antes de a captura começar, além de uma faixa de documentos de amostra por baixo do componente de upload e um aviso permanente de "apenas dados de teste".
Os cenários cobrem os resultados de que realmente precisas para construir e testar:
| Queres testar | Cenário |
|---|---|
| Tudo aprovado | approve |
| Documento caducado | decline_document_expired |
| Documento ilegível | decline_could_not_recognize_document |
| Falha no checksum da MRZ | decline_mrz_validation |
| Abaixo da idade mínima | decline_minimum_age |
| Correspondência facial demasiado baixa | decline_face_match_low_similarity |
| Ataque de apresentação na prova de vida | decline_liveness_attack |
| Ocorrência de sanções / PEP em AML | decline_aml_hit |
| Endereço IP bloqueado | decline_ip_blocklist |
| Discrepância de morada no comprovativo de morada | decline_poa_address_mismatch |
| Falha de integridade no chip NFC | decline_nfc_chip_not_verified |
| Validação em base de dados sem correspondência | decline_database_no_match |
| Precisa de revisão manual (AML) | review_aml_possible_match |
| Precisa de revisão manual (correspondência facial limítrofe) | review_face_match_borderline |
| Precisa de revisão manual (correspondência parcial de morada) | review_poa_partial_match |
| Discrepância no registo KYB | decline_kyb_registry_mismatch |
Os cenários review_* existem para poderes exercitar todo o caminho de revisão manual - a fila de revisão da consola, o webhook In Review, um revisor a aprovar ou a pedir reenvio - sem precisares de um input com nível de recusa.
O catálogo em direto de cenários e valores mágicos é servido pela própria API
em GET /v1/sandbox/scenarios/. Se algum slug aqui parecer desatualizado,
confia no endpoint. Referência completa: testes em sandbox.
#Distinguir os dois no teu próprio código
Todos os webhooks trazem um campo environment - "sandbox" ou "live". Faz a bifurcação com base nisso em vez de tentares inferir o ambiente a partir da chave, e nunca vais confundir uma sessão de teste com um cliente real.
#O que o sandbox não faz
- Não devolve dados reais de registo para uma empresa real. O KYB em sandbox usa respostas de registo simuladas.
- Não envia um SMS ou e-mail real. A verificação de telefone e e-mail são simuladas, por isso não podes usar o sandbox para pré-visualizar a entrega real de mensagens.
- Não consome os teus limites mensais gratuitos - o que também significa que uma execução em sandbox não te diz nada sobre as comprovações gratuitas que te restam.
#Se precisares de verificações de teste reais
Algumas coisas exigem genuinamente uma chamada em produção - confirmar que o serviço de base de dados de um país específico está provisionado para ti, ou confirmar a entrega de SMS a uma operadora específica. Isso precisa de um pequeno carregamento numa aplicação em produção em vez de sandbox. Pergunta ao suporte antes de gastares nisso, para que possam confirmar primeiro que o serviço está mesmo ativado na tua conta.
