Adaptações para Consultas de Recursos na API Pagamentos entre Versões 4.0.1 e 5.0.0
Introdução e objetivo
A introdução das funcionalidades de Pix Saque, Pix Troco, adoção dos instrumentos de liquidação que representam a iniciação por aproximação (NFC) e a formalização do funil de rejeição da Jornada Sem Redirecionamento (JSR) resultaram no versionamento da API Pagamentos para a versão 5.0.0. Foram implementadas diversas alterações (disponíveis para consulta na página de changelog desta versão), porém, devido a características inerentes do consentimento dessa API, certos aspectos requerem observação durante a operação de recursos pertencentes a versões anteriores. Estes pontos são abordados nas seções subsequentes.
Este documento complementa o changelog da API e define quais operações podem ser realizadas entre as versões e quais não podem. Além disso, detalha o tratamento a ser aplicado a cada um dos campos que apresentam alguma mudança em suas regras de negócio ou técnicas significativas para a execução das consultas de recursos no Open Finance.
Ressalta-se que a versão 4.0.1 da API Pagamentos não permitia a operação dos produtos Pix Saque e Pix Troco, portanto, as adequações especificadas neste documento aplicam-se predominantemente às consultas de operações iniciadas em versões anteriores e consultadas na versão 5.0.0.
Orientações Gerais
Haverá um período de convivência entre as versões 4.0.1 e 5.0.0, durante o qual ambas estarão disponíveis. Ao final do período, apenas a versão 5.0.0 ficará disponível, e os ITPs deverão ter migrado integralmente suas chamadas até esta data.
Consentimentos da API Pagamentos são de uso único. Após criados e autorizados, são utilizados para gerar pagamento(s), transitando para o status CONSUMED. A partir deste ponto, ficam disponíveis apenas para consultas.
Não será permitida a criação de um consentimento em uma versão e a sua utilização para iniciação de pagamento em uma versão diferente, independentemente dos campos envolvidos na transação. O consentimento e o pagamento subsequente devem pertencer à mesma versão da API.
Neste cenário, deve-se retornar o código de erro HTTP 422 com os seguintes detalhes:
code: PAGAMENTO_DIVERGENTE_CONSENTIMENTO;
detail: Divergência entre versões de consentimento e pagamento.
Pagamentos e consentimentos criados em versões anteriores devem permanecer consultáveis através dos endpoints GET /consents/{consentId}, GET /pix/payments/{paymentId} da versão 5.0.0 durante e após o período de convivência.
Não será permitida a consulta de um consentimento ou pagamento criado na versão 5.0.0 através dos endpoints da versão 4.0.1.
Neste cenário, deve-se retornar o código de erro HTTP 400.
Por fim, pagamentos agendados criados em versões anteriores poderão ser cancelados através do endpoint PATCH /pix/payments/{paymentId} da versão 5.0.0 durante e após o período de convivência.
Orientações Específicas
1. Análise Comparativa do corpo de resposta do GET /consents/{consentId} entre as Versões 4.0.1 e 5.0.0
1.1 Campos Adicionados na Versão 5.0.0:
Campo (XPath) | Obrigatoriedade | Tipo de Dado | Descrição | Ação |
|---|---|---|---|---|
| Obrigatório quando | enum | Finalidade da transação. Valores: | Derivar o valor a partir dos dados do consentimento v4.0.1, conforme regra da seção 1.5. |
| Obrigatório quando | string | Payload JWS obtido pela ITP na leitura do QR dinâmico. | Retornar o valor fixo |
1.2 Campos Modificados (Mudanças de Conteúdo):
Campo (XPath) | Versão 4.0.1 | Versão 5.0.0 | Ação |
|---|---|---|---|
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Enum: | Enum ampliado: | Sem ação. Devolver o valor original informado na criação do consentimento. |
1.3 Campos Modificados (Mudanças de Obrigatoriedade):
Campo (XPath) | Versão 4.0.1 | Versão 5.0.0 | Ação |
|---|---|---|---|
| Inexistente no nível raiz do | Promovido ao nível raiz do | Para consentimentos custom da v4.0.1, derivar o valor a partir de |
| Enum sem | Novos valores adicionados ao enum. | Sem ação. Devolver valor atual. |
1.4 Campos Removidos na Versão 5.0.0:
Campo (XPath) | Motivo/Observação | Ação |
|---|---|---|
| Realocado para o nível raiz do | Para consentimentos custom da v4.0.1, o valor deve ser utilizado para preencher |
1.5 Tratamentos para campos obrigatórios sem origem na versão 4.0.1:
Derivação de data>payment>purpose
O valor deve ser derivado a partir da estrutura do consentimento v4.0.1:
Condição no consentimento v4.0.1 | Valor derivado |
|---|---|
Campo |
|
Objeto |
|
Objeto |
|
Os valores WITHDRAW e CHANGE não se aplicam a recursos da v4.0.1, dado que os produtos Pix Saque e Pix Troco não eram suportados nesta versão.
Valor fixo para data>payment>details>payloadJWS e data>payment>schedule>additionalInformation (agendamentos não-custom)
Para estes campos não há dado de origem na v4.0.1 nem regra de derivação aplicável, adota-se o preenchimento com valor fixo sentinela, que atende às restrições de schema da v5.0.0:
Campo (XPath) | Valor fixo | Observação |
|---|---|---|
|
| Satisfaz o pattern |
|
| Satisfaz o pattern |
2. Análise Comparativa do corpo de resposta do GET /pix/payments/{paymentId} entre as Versões 4.0.1 e 5.0.0
2.1 Campos Modificados (Mudanças de Conteúdo):
Campo (XPath) | Versão 4.0.1 | Versão 5.0.0 | Ação |
|---|---|---|---|
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Pattern: | Pattern: | Sem ação. Devolver valor atual. |
| Enum: | Enum ampliado: | Sem ação. Devolver o valor original informado na criação do pagamento. |
| Enum sem | Novos valores adicionados ao enum. | Sem ação. Devolver valor atual. |
Conclusão
Adotando as ações necessárias, as consultas de recursos entre as versões (anterior e recente) devem ocorrer de forma suave pelas ITPs e Detentoras que sigam as especificações e realizem as adequações de retrocompatibilidade.