Eagle · Pagamentos
SoftPOS · Tap on Phone

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

Esta seção documenta um SDK ainda em desenvolvimento. A API pode mudar, os pacotes ainda não estão publicados e os fluxos descritos não foram homologados em produçã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 deURL base
Máquina localhttp://localhost:8080
Emulador Androidhttp://10.0.2.2:8080
Aparelho físico na mesma redehttp://<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

  1. Suba o mock.
  2. Num emulador ou aparelho Android 12+ com o m-SiTef (SITSIM) instalado, rode o app de exemplo (:examples:android-native).
  3. 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=000123

Em 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

ItemVerificação
AmbienteEagleEnvironment.PRODUCTION e URL de produção
CredenciaisapiKey de produção fora do repositório, injetada no build
TráfegoSomente HTTPS; usesCleartextTraffic desligado
Gate de plataformaisAndroidVersionSupported() e isMSitefInstalled() antes de mostrar a cobrança
LogsNenhum PAN, PIN ou via de comprovante registrada
RecusaCaminhos DENIED, CANCELED e ERROR tratados na UI

On this page