Getnet DocsGetnet Docs

Início Rápido: Sua Primeira Transação

Este guia ajuda você a criar sua primeira transação de pagamento com sucesso utilizando a integração Get Smart App2App. Você criará um Intent, enviará uma solicitação de pagamento e tratará o resultado da transação — tudo em poucos minutos.

O que você vai construir

Neste tutorial, você criará um método Android simples que gera um intent de pagamento, adiciona os parâmetros de transação necessários, lança a aplicação Get Smart e trata o resultado da transação.

Requisitos

Antes de começar, certifique-se de que você possui:

  • A aplicação Get Smart instalada em seu dispositivo de teste
  • Um projeto Android configurado com uma Activity funcional
  • Familiaridade básica com desenvolvimento Android e Intents

Certifique-se de que a aplicação Get Smart esteja atualizada para a versão mais recente para garantir a compatibilidade.

Passo 1: Definir o Código de Solicitação

Primeiro, adicione uma constante à sua Activity para identificar esta solicitação de pagamento:

public class MainActivity extends AppCompatActivity {
    // Request code to identify the payment transaction
    private static final int REQUEST_CODE_PAYMENT = 1001;

    // ... rest of your Activity code
}

Passo 2: Criar o Método de Pagamento

Adicione um método para iniciar a transação de pagamento:

private void startPayment(double amount, String invoice) {
    // 1. Create the Intent with the specific action name
    Intent intent = new Intent("es.android.redsys.mPOS.movil.tpvAndroid_PAYMENT_REQUEST");

    // 2. Add the required parameters
    intent.putExtra("amount", amount);
    intent.putExtra("invoice", invoice);
    intent.putExtra("type", 1); // 1 = Sale transaction

    // 3. Launch the Get Smart app with error handling
    try {
        startActivityForResult(intent, REQUEST_CODE_PAYMENT);
    } catch (ActivityNotFoundException e) {
        // The Get Smart app is not installed
        showErrorDialog();
    }
}

private void showErrorDialog() {
    new AlertDialog.Builder(this)
        .setTitle("Payment App Not Found")
        .setMessage("Please ensure the Get Smart application is installed and updated.")
        .setPositiveButton("OK", null)
        .show();
}

O código de solicitação REQUEST_CODE_PAYMENT é uma constante inteira definida por você. Você usará este mesmo código no método onActivityResult para identificar qual solicitação está retornando.

Passo 3: Tratar o Resultado da Transação

Sobrescreva o método onActivityResult para receber o desfecho da transação:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_CODE_PAYMENT) {
        if (resultCode == RESULT_OK && data != null) {
            // Transaction completed - check if it was authorized
            String result = data.getStringExtra("RESULT");

            if ("AUTORIZADA".equals(result)) {
                // Payment successful!
                String authNumber = data.getStringExtra("AUTORIZATION_NUMBER");
                String orderNumber = data.getStringExtra("ORDER");

                showSuccessMessage("Payment approved! Auth: " + authNumber);
            } else {
                // Payment denied
                String errorMsg = data.getStringExtra("ERROR_MSG");
                showErrorMessage("Payment denied: " + errorMsg);
            }
        } else if (resultCode == RESULT_CANCELED) {
            // User cancelled the transaction
            showInfoMessage("Transaction cancelled by user");
        }
    }
}

private void showSuccessMessage(String message) {
    Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}

private void showErrorMessage(String message) {
    Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}

private void showInfoMessage(String message) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

RESULT_OK não significa que o pagamento foi autorizado. Significa apenas que o app Get Smart concluiu seu processo. Você deve verificar o extra RESULT para determinar se o pagamento foi realmente aprovado.

Passo 4: Acionar o Pagamento

Adicione um manipulador de clique de botão (ou método de gatilho) para iniciar o pagamento:

// Example: Button click handler
public void onPayButtonClick(View view) {
    // Process a payment of 10.50 euros
    startPayment(10.50, "ORDER-001");
}

Substitua o valor fixo pelo valor real da sua transação com base no pedido do cliente.

Aqui está o código completo em um só lugar:

public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_CODE_PAYMENT = 1001;

    private void startPayment(double amount, String invoice) {
        Intent intent = new Intent("es.android.redsys.mPOS.movil.tpvAndroid_PAYMENT_REQUEST");
        intent.putExtra("amount", amount);
        intent.putExtra("invoice", invoice);
        intent.putExtra("type", 1); // Sale

        try {
            startActivityForResult(intent, REQUEST_CODE_PAYMENT);
        } catch (ActivityNotFoundException e) {
            new AlertDialog.Builder(this)
                .setTitle("Payment App Not Found")
                .setMessage("Please install the Get Smart application.")
                .setPositiveButton("OK", null)
                .show();
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_CODE_PAYMENT) {
            if (resultCode == RESULT_OK && data != null) {
                String result = data.getStringExtra("RESULT");

                if ("AUTORIZADA".equals(result)) {
                    String authNumber = data.getStringExtra("AUTORIZATION_NUMBER");
                    Toast.makeText(this, "Payment approved! Auth: " + authNumber,
                                   Toast.LENGTH_LONG).show();
                } else {
                    String errorMsg = data.getStringExtra("ERROR_MSG");
                    Toast.makeText(this, "Payment denied: " + errorMsg,
                                   Toast.LENGTH_LONG).show();
                }
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(this, "Transaction cancelled", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

Parabéns! Você criou com sucesso sua primeira transação de pagamento usando a integração Get Smart App2App. Este exemplo completo demonstra os componentes essenciais necessários para processar pagamentos: criação do Intent, tratamento de respostas e gerenciamento de cenários de erro. Você pode agora construir sobre esta base para adicionar recursos de pagamento mais sofisticados à sua aplicação.

Resolução de Problemas

Se você encontrar problemas durante a integração ou em tempo de execução, consulte a tabela abaixo:

Problema / ExceçãoDescrição e Causas PotenciaisAção Recomendada
ActivityNotFoundExceptionA aplicação Get Smart não está instalada no dispositivo.Instale o app via seu sistema de gerenciamento de dispositivos ou entre em contato com um representante Get Smart.
RESULT_CANCELEDO usuário saiu manualmente da interface ou pressionou o botão de voltar.Trate isso como um cancelamento padrão do usuário; garanta que sua UI retorne a um estado neutro.
Nenhum dado em onActivityResultOs dados do Intent estão null. Isso ocorre se o app travou, o dispositivo ficou sem memória ou o sistema encerrou o processo.Registre os detalhes do erro e solicite ao usuário que tente a transação novamente.
Pagamento “DENEGADA”O gateway de pagamento recusou a transação (ex: saldo insuficiente, cartão expirado ou conta bloqueada).Analise o campo ERROR_MSG e exiba-o ao usuário para que ele saiba por que o cartão foi rejeitado.

O que você aprendeu

Neste tutorial, você aprendeu como:

  • Criar e configurar um Intent de pagamento
  • Lançar a aplicação Get Smart
  • Tratar resultados de transação
  • Implementar o tratamento de erros adequado

Próximos Passos

Agora que você tem uma integração funcional: