Criar e monitorar solicitações de pagamento
O fluxo de pagamento
Entender o fluxo completo de pagamento ajuda a integrar a Fluxis de forma eficaz na sua aplicação:
Code
Detalhamento do fluxo
- Sua app cria uma solicitação de pagamento via API Fluxis para um valor específico
- A Fluxis retorna os detalhes da solicitação incluindo um token NASPIP
- O cliente vê a solicitação como QR code ou link de pagamento
- O cliente paga usando a carteira cripto
- A Fluxis detecta o pagamento na blockchain e notifica você
- A transação é confirmada e você atende o pedido
Criar uma solicitação de pagamento
Para criar uma solicitação de pagamento, você precisará de:
📋 Informações obrigatórias
Point of Sale ID - O UUID do seu Ponto de Venda
Amount - Valor do pagamento como string decimal (ex.: "49.99")
Unique Asset ID (UAI) - Mais informações sobre UAI aqui.
Reference ID - Opcional: Seu ID interno de pedido ou transação
Você pode criar sua primeira solicitação no nosso API Playground - Payment Request.
Alternativamente, use hosted checkout (POST /v1/pos/{posID}/payment-request-checkout) para receber uma checkout_url e redirecionar clientes sem construir sua própria UI NASPIP.
O token NASPIP
O token NASPIP é uma string assinada criptograficamente que contém todas as instruções de pagamento:
Code
Este token pode ser:
- Codificado como QR code para leitura em carteira móvel
- Compartilhado como link de pagamento para carteiras web/desktop
- Compartilhado por carteiras com NFC para pagamento por proximidade ou offline
Opções de exibição
A maioria dos comerciantes exibe o token NASPIP como QR code para leitura móvel fácil.
Codifique o campo token da resposta create-payment-request como imagem QR na sua app.
Tokens NASPIP baseados em URL
Alguns tokens incorporam uma url em vez de instruções inline. Use POST /v1/naspip/read com o token — quando o payload contém URL sem payment_options, a Fluxis resolve as instruções buscando essa URL no servidor antes de retornar os dados decodificados.
Estados da solicitação de pagamento
As solicitações progridem por diferentes estados durante o ciclo de vida:
Diagrama de transição de estados
Code
Descrição dos estados
| Estado | Significado | O que fazer |
|---|---|---|
created | Aguardando pagamento (ativo por ~8 minutos) | Exibir ao cliente, monitorar mudanças |
processing | Pagamento detectado, aguardando confirmação blockchain | Continuar monitorando, informar o cliente |
completed | Pagamento recebido e confirmado | Atender pedido, encerrar solicitação |
expired | Tempo esgotado sem pagamento | Oferecer criar nova solicitação |
underpaid | Recebido menos que o valor esperado | Contatar suporte para resolução |
overpaid | Recebido mais que o valor esperado | Contatar suporte para resolução |
failed | Erro inesperado durante o processamento | Contatar suporte; pode ser necessária nova solicitação |
Casos extremos
Os estados underpaid, overpaid e failed são casos extremos que exigem coordenação com o suporte Fluxis conforme suas necessidades de negócio.
Mais informações: Fluxos de pagamento - Casos extremos.
Monitorar o status do pagamento
Após criar uma solicitação, você precisa monitorar o status para saber quando o pagamento é recebido. Há duas abordagens:
Opção 1: Polling
Consulte periodicamente o status chamando o endpoint de status.
Endpoint: GET /v1/pos/{posID}/payment-request/{paymentRequestID}
Teste no nosso API Playground - Get Payment Request.
Estratégia de polling
Intervalo de polling recomendado:
- Primeiros 2 minutos: Polling a cada 2-3 segundos
- Após 2 minutos: Polling a cada 5 segundos
Após expiração: Parar polling ou fazer polling a cada 30 segundos no período de carência
Vantagens:
- Simples de implementar
- Funciona com qualquer infraestrutura
- Sem configuração adicional
Desvantagens:
- Não é em tempo real
- Gera overhead na API
- Pode perder mudanças rápidas de status
Opção 2: Webhooks
Configure webhooks em nível de conta para receber notificações quando o status mudar. Esta é a abordagem recomendada para sistemas em produção.
Endpoint: POST /v1/account/{accountID}/webhook
Teste no API Playground — Create webhook.
Configuração de webhook
Registre uma URL HTTPS completa e defina event_type como payment_request:
Code
A Fluxis gera o secret de assinatura e retorna uma vez na resposta de criação. Webhooks disparam para processing, completed, underpaid e overpaid — não para expired ou failed.
Consulte o guia de Webhooks e Verificação de assinatura de webhook. Após o registro, valide o handler com POST /v1/account/{accountID}/webhook/{webhookID}/test.
Vantagens:
- Notificações em tempo real
- Sem overhead de polling
- Eficiente e escalável
- Arquitetura orientada a eventos
Desvantagens:
- Exige endpoint público
- Precisa implementar handler de webhook
- Deve verificar assinaturas de webhook
::::tip Boa prática Use webhooks em produção e polling como fallback. Implemente ambos para nunca perder uma confirmação de pagamento. ::::
Tratar diferentes cenários
Cenário 1: Pagamento bem-sucedido
- Cliente escaneia QR code ou clica no link de pagamento
- Cliente confirma o pagamento na carteira
- Pagamento aparece na blockchain
- Status muda para
processing - Transação recebe confirmações suficientes
- Status muda para
completed - Você atende o pedido
Sua ação: Atenda o pedido quando o status for completed.
Cenário 2: Solicitação expirada
- Passam ~8 minutos sem pagamento
- Status muda para
expired - A solicitação não é mais válida
Sua ação: Ofereça ao cliente criar uma nova solicitação de pagamento.
Cenário 3: Transação lenta
- Cliente inicia pagamento perto da expiração
- Transação é transmitida mas não confirmada antes do timeout
- Período de carência da Fluxis processa a transação tardia
- Status atualiza para
processinge depoiscompleted
Sua ação: Continue monitorando mesmo após a expiração por mais 2-3 minutos.
Boas práticas
1. Sempre use Reference IDs
Inclua seu ID interno de pedido ou transação no campo
reference_id. Isso facilita muito conciliação e depuração.
2. Exiba informações claras de pagamento
Mostre aos clientes:
- Valor do pagamento em cripto e fiat
- Tempo restante (contador regressivo)
- Rede utilizada
- Tempo de confirmação esperado
3. Trate expiração com elegância
Não abandone o cliente se um pagamento expirar. Ofereça opção clara para criar nova solicitação com um clique.
4. Nunca confie apenas no status
Sempre verifique se o campo amount corresponde ao valor esperado.
Não atenda pedidos com pagamentos underpaid ou failed
sem coordenação.
5. Armazene dados da solicitação de pagamento
Mantenha registro no banco vinculando:
- Seu ID de pedido
- ID da solicitação de pagamento Fluxis
- Timestamp de criação
- Status atual
- Valor e ativo
Padrões comuns de integração
Fluxo de checkout e-commerce
Code
Terminal ponto de venda
Code
Solução de problemas
Solicitação de pagamento não é criada
Sintomas: Erro ao criar solicitação de pagamento
Causas comuns:
- Token de acesso inválido ou expirado
- ID de Ponto de Venda inexistente ou fora da organização
- Formato UAI inválido
- Valor zero ou negativo
Solução: Verifique token de autenticação, ID de Ponto de Venda e parâmetros da requisição.
Status não atualiza
Sintomas: Status preso em created apesar do pagamento do cliente
Causas comuns:
- Pagamento enviado para endereço errado
- Pagamento com ativo/rede incorretos
- Confirmações de rede insuficientes
- Pagamento pendente na carteira do cliente
Solução: Peça ao cliente verificar o hash da transação. Consulte o explorador blockchain para confirmar o status.
Webhooks não recebidos
Sintomas: Notificações webhook não chegam
Causas comuns:
- URL de webhook não publicamente acessível
- Firewall bloqueando IPs da Fluxis
- Endpoint de webhook retornando erros
- Problemas de certificado SSL/TLS
Solução: Chame POST /v1/account/{accountID}/webhook/{webhookID}/test para entrega de amostra assinada. Verifique logs do servidor, SSL e confirme que verificação de assinatura passa antes de processar eventos.
Testar sua integração
Antes de ir para produção, teste a integração a fundo:
Checklist de testes
- Criar solicitação de pagamento com parâmetros válidos
- Exibir token NASPIP como QR code
- Monitorar mudanças de status via polling
- Tratar status
completedcorretamente - Tratar status
expiredcom elegância - Testar entrega e parse de webhook
- Verificar assinatura de webhook com segredo da resposta de criação
- Testar webhook via
POST /v1/account/{accountID}/webhook/{webhookID}/test - Tratar erros de rede e retries
- Testar casos extremos (
underpaid,overpaid) - Verificar precisão de valores (decimais)
Ambiente de testes
Entre em contato com o suporte Fluxis para obter credenciais de API de teste e ativos de rede de teste antes de ir para produção.