Getnet DocsGetnet Docs

Verificando o Status do POS

Antes de iniciar uma transação, você pode verificar se o aplicativo Tap on Phone está inicializado corretamente e pronto. Para fazer isso, você envia uma solicitação de status usando um Broadcast do Android.

Este guia mostra como solicitar o status atual do Ponto de Venda (POS) e como gerenciar a resposta.

Passo 1: Registrar um Broadcast Receiver

O aplicativo Tap on Phone processa sua solicitação de status de forma assíncrona e retorna o resultado via um broadcast. Você deve registrar um BroadcastReceiver para escutar esta resposta.

Você pode escutar a ação de resposta padrão (com.dejamobile.cbp.sps.STATUS_BROADCAST_RESPONSE) ou definir um nome de ação personalizado.

// Define your broadcast action (default or custom)
val responseAction = "com.dejamobile.cbp.sps.STATUS_BROADCAST_RESPONSE"

val receiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        val status = intent?.getStringExtra("Status") ?: "Unknown"
        val info = intent?.getStringExtra("Info") ?: ""

        when (status) {
            "Initialized" -> println("POS is ready to process payments.")
            "None" -> println("POS is not initialized. Call InitActivity first.")
            "Failed" -> println("The status request failed. Try launching the POS app and retry.")
            else -> println("Unknown status received.")
        }

        // Unregister the receiver once handled
        context?.unregisterReceiver(this)
    }
}

// Register the receiver
val filter \= IntentFilter(responseAction)
registerReceiver(receiver, filter)

Passo 2: Enviar o Broadcast de Status

Assim que o seu receiver estiver escutando, construa e envie o intent de broadcast para solicitar o status.

Você deve especificar o pacote do Tap on Phone e a classe StatusBroadcastReceiver.

val intent = Intent().apply {
    action = "com.dejamobile.cbp.sps.STATUS_BROADCAST"
    component = ComponentName(
        "com.dejamobile.cbp.sps.app",
        "com.dejamobile.cbp.sps.app.broadcast.StatusBroadcastReceiver"
    )
    addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)

    // Optional: Specify your custom response action
    // putExtra("ResponseAction", responseAction)
}

// Send the broadcast
sendBroadcast(intent)

Parâmetros de Resposta de Status

Quando o seu receiver captura a resposta, o intent contém vários extras. O mais importante é a string Status, que determina se você pode prosseguir com um pagamento.

Valor de StatusSignificado
InitializedO app POS foi inicializado com sucesso e está pronto para processar transações.
NoneO app POS não está inicializado. Você deve iniciar a InitActivity antes de processar pagamentos.
FailedA solicitação falhou. Tente abrir o aplicativo POS manualmente e tente novamente.

Se o status for Initialized, o intent de resposta também inclui os seguintes extras opcionais:

  • merchantId: O ID do lojista atual.
  • userId: O ID do usuário atual.
  • merchantContractCode: O código de contrato do lojista atual.

Use o broadcast de status para garantir que o POS esteja pronto quando o seu aplicativo for retomado (onResume). Se o status retornar None, redirecione o lojista para o seu fluxo de inicialização.