2. Intents de Venda
Projeto/Sistema: TEF Android - GerencieVendas |
Versão do Template: 1.2 |
Processo: Intents de Venda |
Versão do Documento: 1.0 |
Responsável(eis): Luís Leite |
Data: 08/02/2025 |
1. Introdução
Este documento descreve o processo de integração de pagamentos eletrônicos utilizando Intents do Android para comunicação entre o GV e o aplicativo Elgin Pay.
2. Processo
I - Fluxograma
Processo |
Envolvidos |
Dados de Entrada |
Dados de Saída |
PROC001 Criando Pagamentos |
GV e Hub Elgin |
Dados de Pagamentos |
Retorno da Operação |
PROC002 Retorno de Pagamentos |
Hub Elgin e GV |
- |
- |
Especificação Funcional
PROC001 Criando Pagamentos:
Regras de Interface:
1. Selecionado a forma de pagamento, deve ser redirecionado para o TEF HUB pela Intent.
2. Enviado o pagamento ao TEF, o APP da Elgin será aberto aguardando o pagamento.
Regras de Negócio:
1. O valor enviado na intent será o valor liquido da venda, sem edição.
2. Exemplo de Intents:
Parâmetro | Descrição |
funcao |
Funções que podem ser chamadas no Intent: debito |
valor |
valor da transação |
parcelas |
Quantidade de parcelas |
financiamento |
A vista(1), parcelado emissor(2) ou parcelado estabelecimento(3) |
nsu |
NSU da transação |
numParcelas |
Número de parcelas, em caso de compra parcelada. O campo é numérico. |
data |
dd/mm/aa |
3. Visando a integração auto-atendimento, para o intent crédito será definido como apenas 1(uma) "parcelas". e o financiamento como (3) Parcelado estabelecimento.
Questões Técnicas:
1. Intent Débito:
Intent i = new Intent("com.elgin.e1.digitalhub.TEF");
i.putExtra("funcao", "debito");
i.putExtra("valor", "1400");
startActivityForResult(i,1234);
2. Intent Crédito:
Intent i = new Intent("com.elgin.e1.digitalhub.TEF");
i.putExtra("funcao", "credito");
i.putExtra("valor", "1500");
i.putExtra("parcelas", "3");
i.putExtra("financiamento", "3");
startActivityForResult(i,1234);
3. Intent PIX:
Intent i = new Intent("com.elgin.e1.digitalhub.TEF");
i.putExtra("funcao", "pix");
i.putExtra("valor", "13.00");
startActivityForResult(i,1234);
PROC002 Retorno de Pagamentos:
Questões Técnicas:
1. Quando utilizado startActivityForResult
os dados são retornados na função protected void onActivityResult(int requestCode, int resultCode, Intent data)
O parâmetro requestCode
é usado para verificar se o retorno corresponde à chamada. O resultCode
identifica o status da execução do fluxo do idh elgintef (esses valores pertencem ao Android, RESULT_OK (-1) , RESULT_CANCELED (0)). O parâmetro data
é para recuperar os dados enviados pelo IDH (Intent Digital Hub).
Dentro da implementação do onActivityResult
deve existir um condicional comparando se o requestCode é igual ao ID passado no startActivityForResult, e dentro dessa condição verificar se o processo foi executado com sucesso para então recuperar os outros valores enviados por meio da função data.getExtras().getString()
2. Exemplo:
2.1 Implementar a sobrecarga da função onActivityResult()
2.2 Obter o valor de getStringExtra
com a chave retorno com o valor de [Utilizando Payloads] com o Array (Json) de retorno dos métodos invocados
@Override
// 1) sobrecarga da função onActivityResult()
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
// 2) recebe o retorno do E1_DigitalHub (um Intent de retorno)
String retorno = data.getStringExtra("retorno");
Toast.makeText(getApplicationContext(), "Retorno = " + retorno, Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
3. Exemplo de retorno pagamento:
{
"funcao": "<nome da função chamada>",
"mensagem": "<mensagem 'Sucesso' ou com descrição do erro>",
"resultado": {
"mensagem": string,
"administradora": string, // [Opcional]
"autorizacao": string, // [Opcional]
"cnpjRede": string, // [Opcional]
"data": string, // [Opcional]
"nsu": string, // [Opcional]
"nsuRede": string, // [Opcional]
"numeroCartao": string, // [Opcional]
"pagamento": string, // [Opcional]
"rede": string, // [Opcional]
"tipoCartao": string, // [Opcional]
"valor": string, // [Opcional]
"vencimento": string, // [Opcional]
"viaCliente": string, // [Opcional]
"viaEstabelecimento": string, // [Opcional]
"viaSMS": string, // [Opcional]
}
}
©SOFTEN SISTEMAS 2025
No Comments