Um benefício pode ser recusado em uma resposta com o código 200, e uma cobrança pode ser criada e continuar pendente. Esses casos só ficam claros quando o resultado técnico da chamada e o resultado do negócio são lidos juntos.
O resultado técnico
O resultado técnico mostra como a chamada transcorreu. O status HTTP informa como a camada que respondeu tratou a requisição. Uma exceção registrada pelo programa informa uma falha anterior à resposta, como na conexão, na negociação TLS ou na leitura. Esses dados localizam a etapa da chamada, mas não resumem a operação de negócio.
O resultado de negócio
O corpo da resposta informa o que aconteceu com a operação: um pagamento aprovado, um benefício recusado ou um processamento ainda pendente. O contrato define os campos e o significado de cada código. Nem todo erro informado no corpo é uma recusa de negócio, porque o corpo também registra erros de validação e falhas internas da aplicação.
Três situações mostram as duas camadas na mesma resposta:
- no gateway de pagamento, o código 201 com a situação
recusadoindica que a cobrança foi registrada e que o pagamento foi recusado, e a origem da recusa depende do motivo informado; - no PBM, o código 200 com
"situacao": "erro"e"codigo": 14exige a tabela de códigos do fornecedor, e, quando essa tabela define o código 14 como cartão inválido, a resposta registra uma recusa do benefício; - em um serviço SOAP, o código 200 pode acompanhar um retorno normal com um código de recusa no corpo, e uma falha da aplicação pode vir em um elemento Fault, com outra forma de leitura.
As duas camadas pertencem à mesma chamada e se complementam. O status HTTP e o corpo também podem se contradizer, e uma contradição com o contrato é, por si, uma informação útil para a análise.
Quando o log não mostra o status
Alguns logs registram só o corpo da resposta. Nesses casos, os campos registrados e as exceções da mesma operação e da mesma tentativa orientam a leitura. Uma resposta de negócio válida mostra que houve resposta, mas não permite reconstruir o status HTTP omitido. A ausência do status no log também não prova uma falha anterior ao HTTP.
Final, pendente e desconhecido
A situação de uma operação cabe em uma destas três categorias:
- Final: o resultado conclusivo daquela operação, segundo o contrato, como a autorização ou a recusa de uma pré-autorização.
- Pendente: um estado conhecido, que ainda exige acompanhamento.
- Desconhecido: a situação de quem observa, quando a resposta não chegou ou não foi registrada.
Um resultado final não impede eventos posteriores, e um pagamento aprovado ainda pode ser cancelado ou estornado. O resultado desconhecido descreve o que se sabe sobre a operação, e não uma situação gravada no fornecedor. Gravar a operação como recusada só para retirá-la da lista de pendências pode esconder uma cobrança que aconteceu.
Uma consulta que encontra a cobrança pendente esclarece mais do que o tempo esgotado da primeira tentativa, mas ainda não comprova o pagamento. A conclusão acompanha a evidência mais recente da mesma operação e as mudanças de situação permitidas no contrato.
No suporte
Diante de uma resposta, convém registrar o resultado técnico disponível e o significado do resultado de negócio segundo o fornecedor. A separação entre recusa explícita, erro técnico e resultado desconhecido orienta o próximo passo de cada caso.
Para guardar
- O status HTTP e o resultado de negócio esclarecem aspectos diferentes da mesma chamada.
- O código 200 não equivale à aprovação da operação.
- Um código de erro no corpo depende do contrato, e nem todo erro é uma recusa de negócio.
- Final, pendente e desconhecido são situações diferentes.
- Um resultado desconhecido não vira recusa sem evidência.
Uma resposta tem o código 200 e a situação erro. Isso prova que o fornecedor recusou a venda por uma regra comercial?
Não sem a interpretação do código e da mensagem. O corpo pode registrar uma regra comercial ou uma falha técnica da aplicação, e a tabela do fornecedor define o significado naquele serviço.
A resposta do PBM informa produto não coberto e traz o identificador da operação. Por onde começar?
Pelo motivo de negócio informado e pelas regras de cobertura do programa de benefício. Os identificadores e o resultado técnico confirmam que a resposta pertence à tentativa analisada.