Algumas integrações abrem uma conexão com um serviço e trocam mensagens em um formato próprio, sem usar o HTTP. Nesse caso, uma porta acessível é só o começo, e a análise ainda depende do protocolo da aplicação.
O canal e as mensagens
Um socket é a interface que um programa usa para se comunicar pela rede. Em uma integração por socket TCP, o cliente conecta a um endereço e a uma porta e troca mensagens conforme o contrato do fornecedor.
O TCP entrega um fluxo ordenado de bytes, e não mensagens separadas. A aplicação precisa saber onde cada mensagem termina, por um tamanho informado no início, por um caractere delimitador ou por uma estrutura própria. Receber bytes não significa que uma mensagem completa e válida já esteja disponível.
O conteúdo pode ser texto posicional, campos delimitados, pares de chave e valor ou dados binários. A ISO 8583 padroniza mensagens de transações com cartão, com campos numerados, e cada rede adapta a codificação e o uso dos campos. Por isso, não existe um único layout ISO 8583 válido para todas as redes.
O resultado e os sinais
Em um protocolo sem HTTP, o resultado vem em um campo definido pelo fornecedor. Em muitos perfis da ISO 8583, o código 00 representa a aprovação, e o significado de cada código é conferido na tabela da integração.
Uma configuração com endereço e porta e um log com mensagens em texto cru ou em hexadecimal sugerem um socket com protocolo próprio. O endereço e a porta também aparecem em bancos de dados, em brokers e no HTTP, e por isso não identificam o protocolo sozinhos.
Uma conexão recusada, uma interrupção, um tempo esgotado e uma mensagem fora do layout são situações diferentes. Uma porta aberta não confirma a credencial, o formato nem o resultado do negócio. Um tempo esgotado depois do envio de uma operação deixa o processamento desconhecido.
Uma leitura pode trazer parte ou várias mensagens
Uma mensagem de cem bytes pode chegar em leituras menores ou junto com os bytes da mensagem seguinte. O programa acumula os bytes e separa as mensagens pelo mecanismo do protocolo, e a quantidade de leituras não indica a quantidade de transações.
A confirmação do TCP trata dos bytes recebidos pela camada de transporte e não comprova que o serviço validou, autorizou ou gravou a venda. O protocolo de negócio oferece a própria confirmação e os identificadores para a consulta e a recuperação. Depois de uma interrupção, a retransmissão feita pelo TCP na mesma conexão e o reenvio de uma operação nova pela aplicação são situações diferentes.
No suporte
Diante de uma integração por socket, convém confirmar o canal, o protocolo e o destino configurado. O teste de conexão orienta a investigação, e a leitura das mensagens completas e dos códigos do contrato, para a mesma operação, mostra o resultado.
Para guardar
- O TCP transporta bytes, e a aplicação define as mensagens e os resultados.
- O endereço e a porta não identificam sozinhos um protocolo próprio.
- A ISO 8583 tem adaptações em cada rede, sem um layout único.
- Uma conexão aberta não comprova uma operação aceita ou processada.
A configuração tem só um IP e uma porta. É possível afirmar que a integração de TEF usa um protocolo próprio?
Não. Esses dados identificam um destino, que pode atender serviços diferentes. A documentação, a configuração completa e o formato das mensagens confirmam o protocolo.
A porta abre, mas a transação recebe um código de layout inválido. Onde continuar?
Na montagem e na interpretação da mensagem exigida pelo protocolo. O teste confirmou a conexão, e não a compatibilidade dos campos enviados.