Ambiente de desenvolvimento
Como rodar o fluxo de venda ponta a ponta com o mock do backend Eagle, e como testar a integração sem aparelho
Em construção
Dá para desenvolver a maior parte da integração antes de ter credenciais reais: o repositório do SDK traz um mock do backend Eagle e um app de exemplo.
Mock do backend
Implementa exatamente os três endpoints do contrato com dados canned.
./gradlew :mock-backend:run # http://localhost:8080| A partir de | URL base |
|---|---|
| Máquina local | http://localhost:8080 |
| Emulador Android | http://10.0.2.2:8080 |
| Aparelho físico na mesma rede | http://<ip-da-máquina>:8080 |
Todas as rotas exigem Authorization: Bearer <apiKey> — no mock, qualquer valor não vazio
é aceito.
Para apontar o mock a um SITSIM real, exporte SITEF_ADDRESS antes de subir o servidor;
sem isso ele devolve um endereço de exemplo.
Teste ponta a ponta
- Suba o mock.
- Num emulador ou aparelho Android 12+ com o m-SiTef (SITSIM) instalado, rode o app de
exemplo (
:examples:android-native). - Toque em: verificar m-SiTef → ativar vendedor → cobrar (crédito ou Pix).
O log do mock mostra o relato chegando:
Transacao reportada: posId=POS-DEMO-SE approved=true codResp=0 nsu=000123Em builds de desenvolvimento apontando para http://, o Android bloqueia tráfego em texto
plano por padrão. Habilite usesCleartextTraffic apenas no build type de debug — nunca em
release.
Testar sem aparelho
O fluxo de venda é testável em JUnit puro: implemente EagleBackend com respostas fixas e
injete uma EagleSession própria.
class BackendFalso : EagleBackend {
override suspend fun activateSeller(sellerToken: String) =
ActivationResult(sellerId = "s1", posId = "POS-1", tlsRegistered = true)
override suspend fun fetchTransactionConfig(posId: String) =
TransactionConfig(
empresaSitef = "00000001",
enderecoSitef = "sitef.local:20036",
cnpjCpf = "12345678000199",
)
override suspend fun reportTransaction(report: TransactionReport) = Unit
}Com isso você cobre ativação, montagem dos extras, interpretação do CODRESP e relato sem
nenhum dispositivo envolvido. O SDK usa essa mesma estratégia nos seus testes.
Checklist antes de produção
| Item | Verificação |
|---|---|
| Ambiente | EagleEnvironment.PRODUCTION e URL de produção |
| Credenciais | apiKey de produção fora do repositório, injetada no build |
| Tráfego | Somente HTTPS; usesCleartextTraffic desligado |
| Gate de plataforma | isAndroidVersionSupported() e isMSitefInstalled() antes de mostrar a cobrança |
| Logs | Nenhum PAN, PIN ou via de comprovante registrada |
| Recusa | Caminhos DENIED, CANCELED e ERROR tratados na UI |