Referência da API
Tipos, métodos, estados e erros do SDK SoftPOS (Android nativo)
Em construção
Referência do SDK nativo (com.eagleix.softpos). Os wrappers
React Native e Flutter expõem os
mesmos conceitos com nomes equivalentes.
Eagle
Fachada global. Guarda a sessão corrente e delega a ela.
| Membro | Assinatura | Descrição |
|---|---|---|
initialize | (Context, EagleConfig) -> EagleSession | Cria e registra a sessão. Chame uma vez por processo |
state | StateFlow<EagleState> | Estado observável. Requer initialize |
isMSitefInstalled | () -> Boolean | Presença do app m-SiTef |
isAndroidVersionSupported | () -> Boolean | true em Android 12 (API 31) ou superior |
playStoreIntent | () -> Intent | Intent para a página do m-SiTef na loja |
activateSeller | suspend (String) -> ActivationResult | Ativa o vendedor com o sellerToken |
requireSession | () -> EagleSession | Sessão corrente; lança EagleError.NotInitialized |
EagleSession
Uma sessão: configuração, estado e o vendedor ativo. Existe como instância — e não só como singleton — para que testes possam injetar um backend falso sem desfazer estado global.
val session = EagleSession(context, config)
val payments = EaglePayments(activity, session)Expõe os mesmos métodos de Eagle, mais activation: ActivationResult? — o vendedor
ativo, ou null antes de activateSeller.
EagleConfig
EagleConfig(
apiKey: String, // credencial do tenant; não pode ser vazia
environment: EagleEnvironment, // SANDBOX | PRODUCTION
backend: EagleBackend, // HttpEagleBackend ou implementação própria
logger: EagleLogger = EagleLogger.NONE,
)EaglePayments
EaglePayments(
activity: ComponentActivity,
session: EagleSession = Eagle.requireSession(),
)| Método | Assinatura |
|---|---|
startSale | suspend (SaleRequest) -> SaleResult |
Instancie no onCreate da Activity. O registro do resultado da Intent precisa acontecer
antes de a Activity ficar RESUMED.
startSale executa, em ordem: valida pré-condições → busca a configuração da transação no
backend → dispara a Intent do m-SiTef → interpreta o retorno → relata a venda ao backend →
devolve o resultado.
SaleRequest
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
amountInCents | Long | — | Valor em centavos; obrigatoriamente maior que zero (5000 = R$ 50,00) |
method | PaymentMethod | — | Método de pagamento |
installments | Int | 1 | Parcelas; só tem efeito em CREDIT. Mínimo 1 |
receiptNumber | String? | null | Número do cupom fiscal (até 20 caracteres) |
operator | String? | null | Código do operador (até 20 caracteres) |
collectTimeoutSeconds | Int | 60 | Timeout de coleta; 0 ou negativo desliga |
amountInCents <= 0 ou installments < 1 lançam IllegalArgumentException na
construção — validação acontece antes de qualquer chamada de rede.
PaymentMethod
| Valor | Modalidade m-SiTef | Descrição |
|---|---|---|
MENU | 0 | O m-SiTef exibe o menu para o operador escolher. O valor não é enviado |
DEBIT | 2 | Débito à vista |
CREDIT | 3 | Crédito; parcelado quando installments > 1 |
PIX_WALLETS | 122 | Pix e carteiras digitais (QR Code exibido pelo m-SiTef) |
SaleResult
Cada campo corresponde a um extra devolvido pelo m-SiTef:
| Campo | Extra m-SiTef | Descrição |
|---|---|---|
approved | — | true apenas quando a Activity retorna RESULT_OK e CODRESP == 0 |
codResp | CODRESP | Código interpretado; ver códigos de resposta |
transactionCode | CODTRANS | Código da transação |
installmentType | TIPO_PARC | Tipo de parcelamento |
nsuSitef | NSU_SITEF | NSU do SiTef |
nsuHost | NSU_HOST | NSU do autorizador |
authorizationCode | COD_AUTORIZACAO | Código de autorização |
cardBrand | BANDEIRA | Bandeira do cartão |
acquirerNetwork | REDE_AUT | Rede autorizadora |
installments | NUM_PARC | Parcelas efetivamente aplicadas |
merchantReceipt | VIA_ESTABELECIMENTO | Via do estabelecimento |
customerReceipt | VIA_CLIENTE | Via do cliente |
confirmationData | COMP_DADOS_CONF | Dados de confirmação TEF |
raw | todos | Mapa cru dos extras, para casos avançados |
As vias (customerReceipt, merchantReceipt) podem conter dados do portador. Exiba-as,
mas não as registre em log nem as persista sem avaliar o escopo PCI.
ActivationResult
| Campo | Tipo | Descrição |
|---|---|---|
sellerId | String | Identificador do vendedor na Eagle |
posId | String | Vínculo vendedor ↔ PDV (sub-estabelecimento); identifica as vendas |
subEstablishmentRef | String? | Referência do sub-estabelecimento na adquirente |
tlsRegistered | Boolean | Se o registro TLS do terminal já foi concluído |
As credenciais SiTef em si não são expostas ao app.
EagleState
Emitido por Eagle.state para o app desenhar a própria UI.
| Estado | Significado |
|---|---|
Idle | Nada em andamento |
MSitefMissing | m-SiTef ausente; ofereça o deep link da loja |
ActivationPending | Ativação do vendedor em andamento |
Processing | Venda em andamento; o m-SiTef está em primeiro plano |
Approved(result) | Venda aprovada |
Denied(result) | Venda não aprovada |
Failed(error) | Falha fora do fluxo transacional |
EagleError
Hierarquia selada de exceções. Reservadas para falhas fora do fluxo transacional —
recusa e cancelamento voltam como SaleResult.
| Erro | Quando acontece |
|---|---|
NotInitialized | Uso antes de Eagle.initialize |
MSitefNotInstalled | App m-SiTef ausente no aparelho |
UnsupportedAndroidVersion(current) | Android abaixo de 12 |
SellerNotActivated | Venda antes de activateSeller |
Network(cause) | Falha de comunicação com o backend Eagle |
Backend(statusCode, detail) | Backend Eagle respondeu erro de negócio |
Unexpected(cause) | Falha não classificada |
EagleLogger
interface EagleLogger {
fun debug(message: String)
fun info(message: String)
fun error(message: String, throwable: Throwable? = null)
companion object { val NONE: EagleLogger }
}EagleLogger.NONE é o padrão: silencioso.
TransactionConfig
Resolvida pelo backend a cada venda e usada apenas para montar a Intent. O app não a
constrói nem deve cacheá-la; está aqui para referência de quem implementa um
EagleBackend próprio.
| Campo | Descrição |
|---|---|
empresaSitef | Código da loja no SiTef |
enderecoSitef | Host e porta do servidor SiTef |
cnpjCpf | CNPJ/CPF do estabelecimento |
comExterna | "4" (TLS Fiserv), obrigatório no Tap on Phone |
tokenRegistroTls | Token de registro TLS do terminal |
cnpjAutomacao | CNPJ da automação |
cnpjFacilitador | CNPJ do facilitador |
branding | Logo e cores exibidos pelo m-SiTef |