Pagamentos
Status, consultas periódicas de status e reconciliação
Consulte o estado do pagamento a partir do backend até obter uma conclusão do banco. Um callback, um retorno de SCA ou o fechamento do widget não constitui confirmação financeira.
Consulta a partir do backend
: "${WR_API_KEY:?Defina WR_API_KEY en el entorno seguro de su backend}"
curl --request POST 'https://api.wealthreader.com/payments/?action=status' \
--header 'Content-Type: application/json' \
--header "X-API-Key: ${WR_API_KEY}" \
--data '{
"payment_intent_id": "11111111-1111-4111-8111-111111111111",
"refresh": true
}'
refresh é opcional e true por padrão. Wealth Reader limita consultas externas pela intenção; aplique backoff também no backend e não crie outra intenção desde que o resultado seja ambíguo.
Três dimensões diferentes
| Campo | Valores centrais | O que você responde |
|---|---|---|
state |
ready, authorization_required, processing, reconciliation_required, terminais |
Estado de fluxo duradouro. |
interaction_status |
not_started, authorization_required, processing, completed, finished |
Se a interação técnica terminou ou continua. |
payment_status |
not_initiated, pending, unknown, settled, rejected, cancelled, expired, failed |
Resultado financeiro normalizado. |
A única confirmação positiva é payment_status: settled, derivada de um estado explícito do banco que confirma a liquidação. Um resultado técnico DONE, interaction_status: completed ou payment_status: pending nunca equivale a liquidação.
Resultado ambíguo
Uma queda de rede não reconhecida, tempo de espera ou resposta após a emissão do início altera a intenção para reconciliation_required e expõe payment_status: unknown. O início não se repete automaticamente.
O provedor atual não oferece uma consulta que reconstrua uma iniciação cuja resposta foi perdida: sua consulta de estado requer o contexto opaco retornado por essa mesma iniciação. Portanto, esse caso precisa de reconciliação manual; não pode ser recuperado por consulta periódica do estado automático ou buscando o ID callback.
Nesse caso:
- manter a chave de idempotência e o identificador;
- não cria outra intenção nem autoriza novamente;
- Veja o status autenticado da Wealth Reader e mantenha sua referência segura de reconciliação;
- entre em contato com o suporte técnico; não continue verificando o status quando
automatic_recoveryestiverfalse.
Para uma intenção que precisa de reconciliação manual, a consulta servidor para servidor pode incluir:
{
"payment_status": "unknown",
"reconciliation_required": true,
"reconciliation": {
"automatic_recovery": false,
"reference": "wrp_recon_0123456789abcdef0123",
"request_id": "11111111-1111-4111-8111-111111111111",
"correlation_id": "22222222-2222-4222-8222-222222222222",
"reason": "initiation_rejected"
}
}
Esses identificadores são referências com dados sensíveis removidos, destinadas ao suporte. Eles não são entregues ao widget e não permitem que o cliente consulte ou reconstrua o estado interno do provedor.
reason é um código Wealth Reader, nunca o texto do fornecedor. initiation_rejected indica que o fornecedor respondeu com uma rejeição definitiva da iniciação; initiation_response_unavailable, que não houve resposta reconhecível. Em ambos os casos, a iniciação já foi transmitida, então não é repetida: mantenha a referência e entre em contato com o suporte técnico.
Retorno e replay
O retorno de SCA chega a um callback exclusivo de pagamentos. Wealth Reader valida a correlação, encaminha os parâmetros do banco ao provedor sem alterações (nomes inesperados são registrados, mas nunca causam a rejeição de um retorno já autorizado), processa o retorno uma única vez e preserva estado sensível criptografado. Uma repetição retorna apenas HTTP 409; não dependa de um código interno no corpo da resposta.
A autenticação pode exigir múltiplos redirecionamentos. Cada REDIRECT validado continua na mesma janela de SCA e abre um novo checkpoint callback; não cria outra iniciação. Um resultado DECOUPLED mantém a intenção em processing para que o widget consulte o status. Um RETRY explícito repete apenas a conclusão já preparada, com uma espera limitada e número de tentativas. ERROR, PASSWORD, MORE_INFO, SELECT_OPTION, um resultado desconhecido ou o esgotamento desses limites terminam em reconciliação, nunca em uma nova iniciação.
O comerciante não precisa publicar ou processar essa callback. Esta versão não envia webhooks para o comerciante: o contrato público de confirmação é a consulta periódica do estado servidor-para-servidor.
Fechando o widget
flow_closed comunica que a interação visível terminou. O frontend pode fechar o modal, mas não deve mostrar "pago" por esse evento. O backend retém a responsabilidade de confirmar ou reconciliar o pagamento.
Próximo passo
Complete a lista de Segurança e Testes.