2.2 KiB
2.2 KiB
Implementação Pix One-Tap (Link Seguro)
Data: 2026-01-18 Responsável: Antigravity
Objetivo
Resolver o problema de usabilidade no WhatsApp onde o código "Pix Copia e Cola" quebrava a formatação ou não era facilmente copiável, criando uma experiência de pagamento fluida ("One-Tap").
Mudanças Realizadas
1. Backend (Rails)
- Rota: Criada rota curta
/r/:token(config/routes.rb) para URLs amigáveis. - Controller: Criado
Public::Api::V1::Captain::PaymentsControllerpara resolver o token SGID e renderizar a página. - Segurança: Uso de
GlobalID::Locator.locate_signedcom tokens que expiram em 2 horas (alinhado ao vencimento do Pix). - Model: Adicionado helper
original_valueemCaptain::PixChargepara facilitar o acesso ao valor da reserva.
2. Frontend (View)
- Arquivo:
app/views/public/api/v1/captain/payments/show.html.erb. - Design: Interface Mobile-First limpa usando TailwindCSS.
- Funcionalidade:
- Botão "COPIAR CÓDIGO PIX" com feedback visual.
- Script de fallback para garantir funcionamento em HTTP/Localhost e Webviews (onde
navigator.clipboardé bloqueado). - Exibição de Nome da Unidade e Valor Formatado.
3. Integração (Captain AI)
- Tool:
GeneratePixToolatualizada para:- Gerar o token assinado (SGID).
- Montar a URL (
/r/:token). - Enviar mensagem instrutiva ("Clique no link...") em vez do código bruto.
- Sanitizar
0.0.0.0para127.0.0.1em ambiente de desenvolvimento. - Instrução explícita anti-Markdown para a LLM não quebrar o link no WhatsApp.
4. Correções (Fixes)
- Correção de
NoMethodErrorna view. - Tratamento de erro se o token for inválido ou expirado.
- Adição de
purpose: :pix_paymentno SGID para evitar reuso de tokens de outros contextos.
Como Validar
- Gerar um Pix via Jasmine (
GeneratePixTool). - Clicar no link recebido.
- Verificar se o nome da unidade e valor conferem.
- Clicar em Copiar e validar se o hash Pix está na área de transferência.
Próximos Passos Sugeridos
- Monitorar conversão de pagamentos com o novo fluxo.
- Avaliar necessidade de fallback para envio de PDF/TXT caso o cliente solicite explicitamente.