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ção | Descrição e Causas Potenciais | Ação Recomendada |
|---|---|---|
ActivityNotFoundException | A 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_CANCELED | O 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 onActivityResult | Os 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:
- Saiba como processar estornos em Processar uma Transação de Estorno
- Explore todos os parâmetros disponíveis em Referência de Parâmetros de Requisição
- Entenda o fluxo completo da transação em Fluxo da Transação