Getnet DocsGetnet Docs

Inicializando o POS

Antes de poder processar quaisquer transações de pagamento, você deve inicializar o aplicativo Tap on Phone. O processo de inicialização estabelece uma sessão segura, aciona a validação de Single Sign-On (SSO) com o seu backend e configura o terminal para o lojista específico.

Normalmente, você realiza essa inicialização uma vez quando o lojista faz login no seu aplicativo cliente. A sessão permanece ativa entre as inicializações do app e as reinicializações do dispositivo até que você a redefina (reset) explicitamente.

Pré-requisitos

Antes de inicializar o POS, certifique-se de que você tem:

  • O userId, merchantId e userToken atuais para o lojista autenticado.
  • O ClientID da sua organização, formatado como uma string JSON.
  • Implementou as APIs Activity Result do AndroidX para gerenciar a resposta do intent.

Passo 1: Registrar o Activity Result Launcher

O app Tap on Phone processa a inicialização de forma assíncrona e pode exibir uma interface para solicitar as permissões necessárias do dispositivo (como acesso à localização) ao lojista.

Você deve registrar um callback de Activity Result para gerenciar o resultado final:

val posInitResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        // The POS is initialized and ready to process transactions
    } else if (result.resultCode == Activity.RESULT_CANCELED) {
        // The initialization failed
        val data = result.data
        val errorCode = data?.getStringExtra("errorCode") ?: "None"
        val errorName = data?.getStringExtra("errorName") ?: "None"
        val errorMessage = data?.getStringExtra("errorMessage") ?: "None"

        // Handle the error (e.g., prompt the user to retry or contact support)
    }
}

Passo 2: Construir o Intent de Inicialização

Crie um Android Intent explícito direcionado à InitActivity do aplicativo Tap on Phone. Você deve incluir o package name, o class name específico e os parâmetros obrigatórios como extras do intent.

  1. Defina a classe do componente como com.dejamobile.cbp.sps.app.InitActivity.
  2. Formate o seu Client ID como uma string JSON para passar no extra operationMetadata.
  3. Adicione o userId, merchantId e userToken.
private fun startPosInit(userId: Int, merchantId: Int, userToken: String, clientId: String) {

    // Format the Client ID as a JSON string
    val operationMetadata \= "{\\"ClientID\\":\\"$clientId\\"}"

    val intent \= Intent().apply {
        setClassName(
            "com.dejamobile.cbp.sps.app",
            "com.dejamobile.cbp.sps.app.InitActivity"
        )

        putExtra("userId", userId)
        putExtra("merchantId", merchantId)
        putExtra("userToken", userToken)
        putExtra("operationMetadata", operationMetadata)
    }

    // Launch the intent
    posInitResult.launch(intent)
}

Passo 3: Iniciar o Intent

Chame a sua função para iniciar o intent.

Quando você inicia este intent:

  1. O app Tap on Phone envia a solicitação de inicialização para o backend.
  2. O backend envia uma solicitação de permissão de SSO para o seu backend.
  3. Se o seu backend aprovar a solicitação (HTTP 200), o app Tap on Phone configura o terminal local.
  4. A Activity é finalizada e retorna RESULT_OK para o seu callback registrado.

Se você precisar trocar de usuários ou limpar a configuração atual, você deve enviar um broadcast de reset antes de chamar o intent de inicialização novamente. Veja Redefinindo o POS para obter instruções.