跳到主要内容

Mocks (Sandbox)

Sandbox militar usa Zetra real de homologação

Ao contrário do SIAPE, o military-payroll-api em sandbox NÃO usa mocks locais. Em sandbox a integração aponta para o endpoint Host-a-Host de homologação da Zetra (eConsig):

  • Sandbox: https://www.econsig.com.br/central_homologa/services/HostaHostService-v8_0?wsdl
  • Produção: https://api.econsig.com.br/central/services/HostaHostService

Os dados de teste (CPFs, matrículas, tokens) são fornecidos pela própria Zetra via planilha de homologação oficial. Suporte Zetra: suporte@econsig.com.br.

Convênio QI Sociedade — Exército Brasileiro

ItemValor
ClienteQI_SOCIEDADE
ConvênioQI_SOCIEDADE-EB
Usuário APIqi_sociedade_xml
Senha APIqi12345
Código Serviço001
Descrição ServiçoEMPRÉSTIMO
Código VerbaZQD

Servidores de Teste

Servidores fictícios cadastrados na Zetra homologação. Todos com senha do servidor = abc123.

Cenário: Margem Negativa

Servidor sem margem disponível — toda tentativa de reserva retorna falha.

#MatrículaCPFData Nascimento
1132722899279.315.128-981983-04-01
2143320397213.628.178-051978-02-17

Cenário: Margem Limite R$ 500,00

Margem reduzida — útil para testar limites e validação INSUFFICIENT_MARGIN.

#MatrículaCPFData Nascimento
3346578694432.108.069-001997-04-21
4982435311432.108.069-001993-03-20

[!info] Matrículas 3 e 4 compartilham o mesmo CPF — útil para testar cenário "mesmo militar, múltiplas matrículas/órgãos".

Cenário: Margem Limite R$ 10.000,00

Margem confortável — usar para testar fluxos completos de margem livre, refinanciamento e portabilidade.

#MatrículaCPFData Nascimento
5346578694540.770.447-151997-04-21
6961683333734.119.817-681963-04-09

Cenário: BLOQUEADO

Servidor com bloqueio em folha — Zetra retorna military_blocked (código 352).

#MatrículaCPFData Nascimento
7234674321045.672.387-021975-01-01
8342542124472.635.472-871964-03-06

Como mapear nos payloads QI

Quando construir o payload de POST /military_payroll/balance:

{
"document_number": "27931512898",
"registration_code": "132722899",
"authorization_document_key": "<document_key do POST /upload>",
"token": "abc123"
}
  • document_number — CPF sem máscara (remova . e - da tabela acima).
  • registration_code — matrícula direto da tabela.
  • token — senha do servidor (abc123 para todos os testes).
  • authorization_document_key — upload de qualquer PDF/PNG; em sandbox a Zetra não valida o conteúdo do termo.

Webhook esperado por cenário

CenárioWebhook military_payroll.balance.status_change
Margem Negativa (1, 2)status: failed, failure_reason: invalid_balance ou consignable_margin_exceeded
Margem Limite R$ 500 (3, 4)status: succeeded, balance: 500.00, allowed_installment_numbers: [...]
Margem Limite R$ 10.000 (5, 6)status: succeeded, balance: 10000.00, allowed_installment_numbers: [...]
BLOQUEADO (7, 8)status: failed, failure_reason: military_blocked (Zetra 352)
CPF/matrícula fora da tabelastatus: failed, failure_reason: military_not_found (Zetra 293) ou invalid_registration_code (Zetra 210)

Fluxo end-to-end recomendado

Para validar margem livre, use teste 5 ou teste 6 (margem alta):

  1. POST /upload com PDF qualquer → document_key.
  2. POST /military_payroll/balance com 27931512898 (margem negativa, pra testar failure) ou 54077044715 (margem 10k).
  3. Aguardar webhook military_payroll.balance.status_change.
  4. Em caso de sucesso, POST /debt_simulation com installment_face_valuebalance retornado.
  5. POST /debt com reservation_method: creation (margem livre) ou refinancing (port/refin).
  6. Aguardar webhook credit_operation.collateral (successfully_acceptedsuccessfully_reserved).
  7. POST /debt/{KEY}/signed com QI Sign ou data-signature opt-in.
  8. Aguardar webhook debt (disbursed).
  9. (opcional cancelamento) PATCH /debt/{KEY}/cancel dentro de 8 dias úteis → recebe PIX QR → simular pagamento → webhook reversal.

Para testar portabilidade com contrato externo, combine teste 5 ou 6 com um original_contract_number fictício (Zetra homologação aceita strings arbitrárias nesse campo durante port em sandbox).

Códigos Zetra observados em sandbox

CódigoMensagemMapeamento na QI
000Operação realizada com sucessosucceeded
210Matrícula inválidainvalid_registration_code
241Erro de comunicaçãocommunication_error (QI retenta automaticamente)
293Militar não encontradomilitary_not_found
352Militar bloqueado em folhamilitary_blocked
359Margem consignável excedidaconsignable_margin_exceeded
360Margem disponível verificadaretorno de consultarMargem

Operação 24/7 em sandbox

A Zetra em homologação opera 24h/dia, todos os dias — sem janela operacional restrita (mesmo comportamento da produção).

Reset de reservas

Reservas Zetra em homologação persistem indefinidamente salvo cancelamento explícito. Limpe seu ambiente cancelando as reservas que não forem necessárias (PATCH /debt/{KEY}/cancel).

Não há mocks locais ativos

O arquivo src/connectors/zetra_mocker.py no repo military-payroll-api existe mas não é invocado no fluxo de runtime — EconsigConnector chama diretamente o ECONSIG_SERVICE_ADDRESS configurado por ambiente. Se algum dia for necessário introduzir mocks locais (ex: Zetra fora do ar bloqueando QA), o ZetraMocker está disponível para ser ativado, mas hoje toda integração de teste passa pela Zetra real de homologação.