Getnet DocsGetnet Docs

Referência de interfaces de serviço

Esta página cataloga todas as interfaces AIDL que sua Manufacturer Service App pode implementar. Também lista os valores fixos que a plataforma da Getnet espera de algumas delas. Para as chamadas que exercitam essas interfaces, consulte Implementar os serviços de hardware.

IMainService

O ponto de entrada. A Middleware App se vincula ao seu serviço pelo pacote com.pagonxt.hal.platform.service e obtém um stub IMainService. Por esse stub ela alcança todas as demais interfaces.

Método de acessoDevolve
getStats()IStatService
getPrinter()IPrinterService
getCard()ICardService
getMifare()IMifareService
getBeeper()IBeeperService
getLed()ILedService
getInfo()IInfoService
getCamera()ICameraService
getEmv()IEMVInterface

ICardService

Cuida da busca de cartão em todas as tecnologias de leitura que seu dispositivo suporta.

MétodoDescrição
search(long timeout, in String[] searchType, in ICardCallback callback)Busca um cartão usando um ou mais dos tipos de busca abaixo, até timeout se esgotar.
stopAllReaders()Para todos os leitores ativos. Chame assim que onCard, onMessage ou onError disparar.

Tipos de busca:

ConstanteValor
MAG"1"
CHIP"2"
NFC"3"

onCard devolve um CardResponse com pan (chip e NFC) ou track1 / track2 / track3 (tarja magnética).

IMifareService

Cobre presença de cartão Mifare, autenticação e leitura/escrita em nível de bloco.

MétodoDescrição
searchCard(in IMifareCallback callback)Busca um cartão Mifare.
searchCardAndActivate(in IMifareActivateCallback callback)Busca e ativa um cartão Mifare em uma só chamada.
activate(int cardType)Ativa um cartão do tipo indicado.
halt()Para o cartão ativo.
getCardSerialNo(int cardType)Devolve o número de série (UID) do cartão como string hexadecimal.
authenticateSectorWithKeyA(int sector, in byte[] key)Autentica um setor com a Key A.
authenticateBlockWithKeyA(int sector, in byte[] key)Autentica um bloco com a Key A.
authenticateSectorWithKeyB(int block, in byte[] key)Autentica um setor com a Key B.
authenticateBlockWithKeyB(int block, in byte[] key)Autentica um bloco com a Key B.
close()Fecha a sessão Mifare atual.
decrement(int index, int value)Decrementa em value o bloco de valor em index.
increment(int index, int value)Incrementa em value o bloco de valor em index.
isExist()Devolve se há um cartão Mifare presente.
readBlock(int index)Lê o bloco em index, devolvido como string.
restore(int index)Restaura o bloco de valor em index.
transfer(int index)Transfere o bloco de valor em index.
writeBlock(int index, String data)Escreve data no bloco em index.
exchangeAPDU(in byte[] apdu)Envia um APDU bruto e devolve um APDUResponse.

As chaves têm 6 bytes. A autenticação de bloco e de setor usa os nomes de parâmetro como declarados no AIDL acima. authenticateBlockWithKeyA/B recebem um parâmetro literalmente chamado sector, embora ele identifique um bloco.

IPrinterService

Monta e imprime um recibo a partir de uma fila de elementos de texto, código de barras, código QR e imagem.

MétodoDescrição
init()Inicializa a impressora. Todo outro método lança IllegalStateException se for chamado antes deste.
getStatus()Devolve o status atual da impressora.
setGray(int gray)Define o nível de escala de cinza aplicado às imagens.
addText(int align, String text)Enfileira uma linha de texto com o alinhamento indicado.
addBarCode(int align, String barcode)Enfileira um código de barras.
addQrCode(int align, int imageHeight, String qrCode)Enfileira um código QR com a altura indicada.
addImageBitmap(int align, in Bitmap bitmap)Enfileira uma imagem Bitmap.
addImageByteArray(int align, in byte[] byteArray)Enfileira uma imagem a partir de bytes brutos.
defineFontFormat(int fontFormat)Define a fonte ativa.
print(in IPrinterCallback callback)Imprime tudo o que está enfileirado.
printAndRemovePaper(in IPrinterCallback callback)Imprime tudo o que está enfileirado e depois avança e corta o papel.

Constantes de fonte

defineFontFormat recebe uma destas três constantes.

ConstanteValorTamanho
FONT_12_16A11Pequeno
FONT_16_32B15Médio
FONT_32_32B22Grande

Especificações da impressora

Valores e comportamentos fixos que sua implementação de impressora deve seguir.

RegraValor
Tamanho máximo de imagem378 pixels. Seu serviço redimensiona automaticamente imagens maiores.
Máximo de caracteres por linha — fontes média e grande32 caracteres. Média e grande só diferem na altura.
Máximo de caracteres por linha — fonte pequena48 caracteres.
Limiar de escala de cinza175. Seu serviço é responsável pela transformação em escala de cinza.
Chamadas repetidas a init()Não devem limpar a fila de impressão. Limpe-a apenas quando o método print() do seu serviço rodar.
Métodos de imagemTodos os métodos addImage* devem aceitar entrada Bitmap.
Texto longoChamadas a addText que ultrapassem o limite de caracteres devem quebrar automaticamente em várias linhas.
Nova linha após conteúdo enfileiradoTodo método que enfileira conteúdo (texto ou imagem) deve acrescentar automaticamente uma quebra de linha.

IBeeperService

Toca retorno sonoro para as ações do portador e do operador.

MétodoDescrição
custom(int durationMillis)Toca um bipe pela duração indicada, em milissegundos.

Sons nomeados e sua duração exigida:

SomDuração
successBipe de 500 ms.
errorBipe de 1000 ms.
digitBipe de 100 ms.
nfcBipe de 100 ms, pausa de 300 ms, bipe de 100 ms.

ILedService

Um par liga/desliga por cor: turnOnRed / turnOffRed, turnOnBlue / turnOffBlue, turnOnYellow / turnOffYellow, turnOnGreen / turnOffGreen.

IInfoService

Devolve os dados de identificação do dispositivo. Consulte InfoResponse para a lista completa de campos.

ICameraService

Lê a câmera frontal do dispositivo para casos de uso de escaneamento.

MétodoDescrição
readFront(long timeout, in ICameraCallback callback)Lê a câmera frontal até timeout se esgotar, ou até quem chamou cancelar a leitura.

O ICameraCallback reporta por onSuccess(code), onTimeout(), onCancel() e onError(error).

IStatService

Reporta as contagens de uso de leituras de cartão e de consumo de papel, tanto no dispositivo inteiro quanto por aplicação chamadora.

MétodoDescrição
getPaperStatus()Consumo total de papel, no dispositivo inteiro.
getAllAppPaperStatus()Consumo de papel, por aplicação chamadora.
getMagStatus()Total de leituras de tarja magnética bem-sucedidas.
getAllAppMagStatus()Leituras de tarja magnética bem-sucedidas, por aplicação.
getMagStatusFail()Total de falhas de tarja magnética.
getAllAppMagStatusFail()Falhas de tarja magnética, por aplicação.
getChipStatus()Total de inserções de chip bem-sucedidas.
getAllAppChipStatus()Inserções de chip bem-sucedidas, por aplicação.
getChipStatusFail()Total de falhas de inserção de chip.
getAllAppChipStatusFail()Falhas de inserção de chip, por aplicação.
getNfcStatus()Total de transações contactless (NFC) bem-sucedidas.
getAllAppNfcStatus()Transações contactless bem-sucedidas, por aplicação.
getNfcStatusFail()Total de falhas contactless.
getAllAppNfcStatusFail()Falhas contactless, por aplicação.
getMifareStatus()Total de leituras de proximidade Mifare bem-sucedidas.
getMifareStatusFail()Total de falhas de proximidade Mifare.
getAllStatisticsByApp()Todas as contagens de sucesso e falha acima, agrupadas por aplicação.

Vários métodos HAL recebem um parâmetro userId que identifica a aplicação chamadora. Exemplos incluem print(int userId, IPrinterCallback callback) e searchMag(int userId, long timeout, in ICardCallback callback). Resolva userId para um nome de pacote com packageManager.getNameForUid(userId) para atribuir as estatísticas corretamente.

IEMVInterface

Usada por IMainService::getEmv. Consulte Máquina de estados EMV para ver como esses métodos se encaixam em uma transação.

MétodoDescrição
create(IEMVEventsAIDL events)Associa um listener de eventos ao serviço. Chame antes de qualquer transação.
reset()Reinicia todos os parâmetros de longo prazo.
version()Devolve uma List<Version> descrevendo o kernel EMV em execução.
setAIDParameter(in List<AIDParameter> data)Define os parâmetros específicos de AID. De longo prazo, prioridade alta exceto para os parâmetros definidos por setTLV.
setCAKey(in List<CAKey> data)Define a lista de chaves da autoridade certificadora. De longo prazo, prioridade baixa.
setRevoked(in List<Revoked> data)Define a lista de números de série de certificado revogados. De longo prazo.
setRiskManagement(in Risk risk)Define os parâmetros de gestão de risco da transação. De longo prazo.
setTLV(in List<TLV> tlvs)Define uma lista de TLVs apenas para a transação atual. De curto prazo, prioridade máxima.
setTerminal(in Terminal terminal)Define os dados do terminal. De longo prazo, sobrescreve parâmetros definidos anteriormente.
start(in List<String> aidList, in Transaction transaction)Inicia a coleta de dados do cartão para uma transação. O kernel EMV ignora qualquer AID que não esteja presente em setAIDParameter.
get(in List<String> list, IGetCallback get)Recupera os TLVs solicitados de forma assíncrona.
getSimplified(in List<String> data)Recupera os TLVs solicitados de forma síncrona, devolvidos como List<TLV>.
cancel()Cancela o fluxo EMV atual. A aplicação ainda precisa aguardar o evento de fim antes de dar a transação por cancelada.

IMaintenanceInterface

Cobre a manutenção do dispositivo: autoverificações, atualizações remotas e ajustes de relógio.

MétodoDescrição
setSelfTestHourRange(String min, String max)Define a janela de reinício por autoverificação (auto-reset), como strings "HH:mm". Devolve 0 em caso de sucesso, -1 em caso de erro.
setAutoUpdateHourRange(String min, String max)Define a janela de tentativa de atualização automática, como strings "HH:mm". Devolve 0 em caso de sucesso, -1 em caso de erro.
setAutoUpdate(boolean isEnabled, boolean autoRebootEnabled)Ativa ou desativa a atualização automática. Devolve 0 em caso de sucesso, -1 em caso de erro.
setAllowGprsUpdate(boolean isEnabled)Permite ou bloqueia a atualização remota por 3G/4G. Devolve 0 em caso de sucesso, -1 em caso de erro.
installApp(String filePath, IMaintenanceResult result)Instala o APK em filePath em segundo plano (sem interação do usuário). Devolve 0 em caso de sucesso, -1 em caso de erro.
uninstallApp(String packageName, IMaintenanceResult result)Desinstala packageName em segundo plano (sem interação do usuário). Devolve 0 em caso de sucesso, -1 em caso de erro.
setTimeZone(String id)Define o fuso horário do dispositivo. Devolve 0 em caso de sucesso, -1 em caso de erro.
setDateTime(String dateTime)Define a data e hora local do dispositivo, como "YYYYMMDDHHmmss" (por exemplo, "20250314093500"). Devolve 0 em caso de sucesso, -1 em caso de erro.

IEncryptionInterface

Cobre o status das chaves e a criptografia de dados para a gestão de chaves do dispositivo.

MétodoDescrição
getKSNbyPosition(int index)Devolve o KSN codificado em hexadecimal da chave em index, ou uma string vazia se não existir.
injectWorkingKey(int index, int mkIndex, in byte[] keyBlock)Injeta uma chave de trabalho em index, criptografada pela chave mestra em mkIndex.
encryptData(int index, int method, in byte[] plainText)Criptografa plainText com a chave em index. method é 1 para modo CBC ou 2 para modo EBC, conforme documenta o kit do fabricante. Devolve os dados criptografados, ou null em caso de erro.

InfoResponse

Campos devolvidos por IInfoService e pelas chamadas de informação de dispositivo relacionadas:

CampoDescrição
sdkVersionVersão do SDK instalado.
bcVersionVersão do componente de boot/base.
osVersionVersão do sistema operacional.
serialNumberNúmero de série do dispositivo.
psamIdIdentificador PSAM.
modelModelo do dispositivo.
manufactureFabricante do dispositivo.
imsiIMSI do SIM, se presente.
imeiIMEI do dispositivo.
iccidICCID do SIM, se presente.
romVersionVersão da ROM.
androidKernelVersionVersão do kernel Android.
androidOSVersionVersão do sistema operacional Android.
hardwareVersionRevisão de hardware.
firmwareVersionVersão do firmware.
hardWareSnNúmero de série de hardware.

Recursos relacionados