ITP - Máquina de Estados - Pix ITP
Visão Geral
O Pix ITP possui duas máquinas de estados independentes:
- Máquina de Estados do Consentimento — ciclo de vida da autorização do usuário
- Máquina de Estados do Pagamento — ciclo de vida de cada transação Pix
1. Máquina de Estados do Consentimento
O consentimento representa a autorização única que o usuário concede para um pagamento específico.
Diagrama
stateDiagram-v2
direction LR
[*] --> AWAITING_AUTHORISATION : POST /payment-initiation\n(criação)
AWAITING_AUTHORISATION --> AUTHORISED : Usuário aprova\n(callback recebido)
AWAITING_AUTHORISATION --> REJECTED : Usuário rejeita\nou timeout
AWAITING_AUTHORISATION --> EXPIRED : Expiração sem\ninteração
AUTHORISED --> CONSUMED : Pix executado\n(POST /pix chamado)
AUTHORISED --> EXPIRED : Expiração sem\nexecução do Pix
REJECTED --> [*]
CONSUMED --> [*]
EXPIRED --> [*]
classDef terminal fill:#f5c6c6,stroke:#c0392b,color:#333
classDef active fill:#c6e2f5,stroke:#2980b9,color:#333
classDef initial fill:#d5f5d5,stroke:#27ae60,color:#333
class REJECTED,CONSUMED,EXPIRED terminal
class AUTHORISED active
class AWAITING_AUTHORISATION initial
Descrição dos Estados
| Status | Descrição | Terminal? |
|---|---|---|
AWAITING_AUTHORISATION | Consentimento criado. Aguardando autenticação e aprovação do usuário na detentora | ❌ |
AUTHORISED | Aprovado. O pagamento Pix pode ser executado via POST /pix | ❌ |
REJECTED | Usuário negou o consentimento ou ocorreu access_denied na autorização | ✅ |
CONSUMED | Pagamento executado com sucesso. Consentimento encerrado | ✅ |
EXPIRED | Consentimento expirou por inatividade ou prazo sem execução | ✅ |
Transições Válidas
| De | Para | Gatilho |
|---|---|---|
AWAITING_AUTHORISATION | AUTHORISED | Callback processado com sucesso (code válido) |
AWAITING_AUTHORISATION | REJECTED | error=access_denied no callback |
AWAITING_AUTHORISATION | EXPIRED | Timeout da sessão de autorização |
AUTHORISED | CONSUMED | POST /pix executado e pagamento submetido |
AUTHORISED | EXPIRED | Expiração sem chamada ao endpoint de Pix |
2. Máquina de Estados do Pagamento
Cada transação Pix gerada via POST /pix possui seu próprio ciclo de vida no SPB (Sistema de Pagamentos Brasileiro).
Diagrama
stateDiagram-v2
direction LR
[*] --> PDNG : POST /pix\n(pagamento criado)
PDNG --> ACSP : Enviado ao SPI\n(validação OK)
PDNG --> RJCT : Falha na validação\n(consentimento, dados)
ACSP --> ACSC : Liquidação confirmada\npelo SPI
ACSP --> RJCT : Falha durante\na liquidação
ACSC --> [*]
RJCT --> [*]
classDef terminal fill:#f5c6c6,stroke:#c0392b,color:#333
classDef success fill:#d5f5d5,stroke:#27ae60,color:#333
classDef inprogress fill:#fef9c3,stroke:#f39c12,color:#333
classDef initial fill:#c6e2f5,stroke:#2980b9,color:#333
class RJCT terminal
class ACSC success
class ACSP inprogress
class PDNG initial
Descrição dos Estados
| Status | Sigla OFB | Descrição | Terminal? |
|---|---|---|---|
PDNG | Pending | Pagamento recebido e aguardando submissão ao SPB | ❌ |
ACSP | Accepted Settlement In Process | Aceito pelo SPI do Banco Central | ❌ |
ACSC | Accepted Settlement Completed | Liquidado com sucesso | ✅ |
RJCT | Rejected | Rejeitado pelo SPB ou pela detentora | ✅ |
Transições Válidas
| De | Para | Gatilho |
|---|---|---|
PDNG | ACSP | Pagamento submetido ao SPI com sucesso |
PDNG | RJCT | Falha na validação antes da submissão |
ACSP | ACSC | Liquidação confirmada pelo SPI |
ACSP | RJCT | Falha durante liquidação no SPB |
Relação entre Consentimento e Pagamento
flowchart TD
A["🔐 POST /payment-initiation\nConsentimento criado\n[AWAITING_AUTHORISATION]"]
B["✅ Usuário aprova\n[AUTHORISED]"]
C["💸 POST /pix\nPagamento submetido\n[PDNG → ACSP → ACSC]"]
D["🔒 Consentimento\n[CONSUMED]"]
E["❌ Usuário rejeita\n[REJECTED]"]
F["⏱️ Timeout\n[EXPIRED]"]
A --> B
A --> E
A --> F
B --> C
C --> D
style A fill:#d5f5d5,stroke:#27ae60,color:#333
style B fill:#c6e2f5,stroke:#2980b9,color:#333
style C fill:#fef9c3,stroke:#f39c12,color:#333
style D fill:#f5c6c6,stroke:#c0392b,color:#333
style E fill:#f5c6c6,stroke:#c0392b,color:#333
style F fill:#f5c6c6,stroke:#c0392b,color:#333
Pontos de Atenção
ConsentimentoCONSUMED≠ pagamentoACSC: O consentimento vai paraCONSUMEDquando oPOST /pixé chamado e o pagamento é submetido, não necessariamente quando liquida. O pagamento ainda pode ser rejeitado (RJCT) mesmo com consentimentoCONSUMED.
Estados terminais são irreversíveis: ConsentimentosREJECTED,CONSUMEDouEXPIREDnão podem ser reativados. Um novoPOST /payment-initiatione nova autorização são necessários.
EXPIREDno consentimento: Se o usuário não completar a jornada de autorização dentro do prazo, ou se o Pix não for submetido dentro do prazo de validade do consentimentoAUTHORISED, o estado vai paraEXPIREDautomaticamente.
Updated about 2 hours ago