Fluxo da Transação
Esta página detalha o fluxo completo da transação para a integração Get Smart App2App, desde a iniciação até a conclusão.
Visão Geral
A integração App2App segue um modelo síncrono de requisição-resposta onde sua aplicação inicia uma transação, a aplicação Get Smart a processa e o controle retorna à sua aplicação com o resultado.
Ciclo de Vida da Transação
Uma transação completa passa por quatro fases distintas. Compreender cada fase ajuda a implementar o tratamento de erros adequado e a gerenciar a experiência do usuário de forma eficaz.
Fase 1: Inicialização
Sua aplicação prepara a requisição de transação reunindo os dados (valor, tipo, número do pedido), criando um Intent com o nome da ação específica e adicionando os parâmetros necessários como extras do Intent.
Fase 2: Lançamento
Sua aplicação lança o Intent usando startActivityForResult e transfere o controle para a aplicação Get Smart. Se o app Get Smart não estiver instalado, uma ActivityNotFoundException é lançada e deve ser tratada por sua aplicação.
Fase 3: Processamento
A aplicação Get Smart assume o controle para exibir a interface de pagamento, ler o cartão, comunicar-se com o gateway de pagamento para autorização, gerenciar a impressão de comprovantes e preparar o Intent de resultado com os detalhes da transação.
Fase 4: Conclusão
O controle retorna à sua aplicação através do callback onActivityResult. Sua aplicação verifica o código de requisição, checa o código de resultado para determinar se o fluxo foi concluído ou cancelado, analisa os dados de resposta dos extras do Intent e processa o desfecho de acordo com sua lógica de negócio.
Diagrama de Fluxo Detalhado
O diagrama a seguir ilustra o fluxo completo da transação, mostrando a sequência de operações e a troca de dados entre sua aplicação e a aplicação Get Smart.

Códigos de Resultado
Os resultados das transações são comunicados através de dois níveis de códigos de status: os códigos de resultado padrão do Android indicam se o fluxo foi concluído, enquanto os valores de resultado específicos da transação indicam se o pagamento foi autorizado.
Códigos de resultado Android
O parâmetro resultCode padrão do Android indica o status de conclusão:
| Código de Resultado | Significado |
|---|---|
RESULT_OK | O app Get Smart concluiu seu fluxo e retornou um resultado (autorização ou negação) |
RESULT_CANCELED | O usuário cancelou a operação ou o app abortou o fluxo |
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 o status da autorização.
Valores de Resultado da Transação
O extra RESULT no Intent de resposta contém o desfecho da transação:
| Valor | Significado |
|---|---|
"AUTORIZADA" | O pagamento foi autorizado com sucesso pelo gateway |
"DENEGADA" | O pagamento foi negado ou falhou |
Tipos de Transação
A integração App2App suporta dois tipos principais de transação, cada um com parâmetros e casos de uso específicos.
Venda (Venta)
Uma transação de compra padrão onde o valor é cobrado no cartão do cliente e um código de autorização é retornado em caso de sucesso. Defina o parâmetro de tipo como 1.
Estorno/Devolução (Devolución)
Uma devolução ou reversão de uma transação anterior. O valor do estorno pode ser parcial ou total. Defina o parâmetro de tipo como 2 e inclua o parâmetro original_order com o número do pedido da transação que está sendo estornada.
Manuseio de Comprovantes
A impressão de comprovantes é gerenciada inteiramente pela aplicação Get Smart, eliminando a necessidade de sua aplicação gerenciar hardware de impressão ou formatação de recibos.
Comprovante do Estabelecimento - Impresso automaticamente após uma transação bem-sucedida. Contém detalhes da transação e assinaturas necessárias para manutenção de registros.
Comprovante do Cliente - O app Get Smart apresenta uma opção para imprimir o comprovante do cliente. O cliente ou o estabelecimento podem escolher se desejam imprimir.
O callback onActivityResult é acionado apenas após a conclusão de todos os fluxos de impressão.
Cenários de Erro
Compreender os cenários de erro comuns ajuda você a implementar um tratamento de erros robusto e fornecer feedback claro aos usuários quando as transações não puderem ser concluídas.
Aplicação não instalada - Se o app Get Smart não estiver instalado, o Android lança uma ActivityNotFoundException. Sua aplicação deve capturar essa exceção e exibir uma mensagem apropriada ao usuário.
Transação Negada - Se o gateway de pagamento negar a transação, o resultCode será RESULT_OK, o extra RESULT será "DENEGADA", e os extras RESPCODE e ERROR_MSG conterão os detalhes da negação.
Cancelamento pelo Usuário - Se o usuário cancelar a transação, o resultCode será RESULT_CANCELED. Nenhuma transação foi tentada e não ocorreu autorização ou negação.
Considerações de Tempo
Os tempos de processamento das transações variam com base em diversos fatores, e sua aplicação deve ser projetada para lidar com essas variações de forma graciosa.
Duração da Transação - O tempo varia com base no método de leitura do cartão (chip é mais lento que por aproximação), conectividade de rede, impressão de comprovantes e tempo de interação do usuário. Sua aplicação não deve expirar (timeout) enquanto aguarda o resultado. O callback onActivityResult do Android sempre será acionado quando o app Get Smart concluir.
Ciclo de Vida da Activity - Enquanto o app Get Smart está ativo, sua Activity pode ser pausada ou parada, e o sistema pode recuperar recursos se a memória estiver baixa. Certifique-se de que sua Activity possa lidar adequadamente com a recriação após a conclusão do pagamento.
Próximos Passos
- Saiba como criar um pagamento de etapa única em Criar um Pagamento de Etapa Única
- Entenda como tratar resultados em Tratar Resultados da Transação
- Revise todos os parâmetros de resposta em Referência de Parâmetros de Resposta