Backlog Unificado
Projeto: SeuImovel. Fonte principal: /www/wwwroot/seuimovel.rio.br/docs/BACKLOG.md.
Modo read-only: ações de escrita ficam disponíveis apenas para o Cérebro.
Especificações Disponíveis (fora da fila pendente)
Detalhe do BK Selecionado
/www/wwwroot/seuimovel.rio.br/docs/backlog/BK-344-mercadopago-pix-dual-gateway.md • 2026-07-25T13:31:42.038Z
BK-344 - Mercado Pago PIX como gateway alternativo (dual com PagSeguro)
Contexto
Pedido do dono em 25/07/2026: replicar no seuimovel.rio.br o mesmo padrão de checkout dual que já existe no rionoteatro.com.br (uma config que escolhe entre PagSeguro e Mercado Pago), usando a mesma conta/token de Mercado Pago já usada no RNT — só muda a descrição do pedido, porque a conta MP está no nome pessoal do dono, não da empresa do rionoteatro.
Espelhado a partir de painel/modulos/creditos/action.php + callback_mp.php do rionoteatro.com.br (fluxo de compra de créditos via PIX, mais próximo do caso do seuimovel do que o fluxo de ingressos).
O que foi feito em 25/07/2026
- Config do gateway: model
ConfiguracaoPagamento(imoveis/models.py), editável via Django Admin (/admin/imoveis/configuracaopagamento/) — equivalente à tabelasite_config/página de config do RNT. Defaultpagseguro(comportamento atual não muda até o dono trocar manualmente). - Credenciais:
MERCADOPAGO_PUBLIC_KEY_PIX,MERCADOPAGO_ACCESS_TOKEN_PIX,MERCADOPAGO_WEBHOOK_SECRET_PIX,MERCADOPAGO_PIX_EXPIRATION_MINUTESno.env— mesmos valores literais do rionoteatro.com.br (mesma conta MP, confirmado pelo dono). - Criação do PIX:
views.iniciar_pagamento_mp_pix(), chamada porcomprar_creditos()quandoConfiguracaoPagamento.get_gateway_ativo() == 'mercadopago'. Descrição enviada ao MP começa com "SeuImovelRio - ..." pra diferenciar do rionoteatro no extrato/dashboard da conta.external_referenceno formatoSEUIMOVEL-CRED-{user_id}-{pacote_id}-{timestamp}(não precisou de tabela de "compra pendente" separada — a referência carrega tudo que o webhook precisa, mesmo padrão quewebhook_pagsegurojá usava). - Webhook:
views.webhook_mercadopago()em/mercadopago-webhook/. Verifica a assinatura HMAC-SHA256 (x-signature/x-request-id, mesmo algoritmo demp_callback_validar_assinatura()do RNT) e revalida direto na API do MP antes de creditar (nunca confia no corpo do POST). Dedup viaTransacaoCredito.codigo_transacao(mesmo campo já usado pelo PagSeguro, criado no BK-18 item 4). - Nginx: rate limit dedicado (
mp_webhook_seuimovel_rl, 120r/m, burst=20) em/mercadopago-webhook/, mesmo padrão do BK-18 item 6/BK-341 item 7. - Template:
imoveis/pagamento_pix.html(QR code + copia-e-cola), simples, sem redirect externo (diferente do PagSeguro que redireciona pra fora do site).
Validação em 25/07/2026
python manage.py checksem erro;manage.py migrateaplicado (migration0009_configuracaopagamento).- Site no ar depois do restart: home/
/imoveis/200. POST /mercadopago-webhook/sem assinatura → 401 (rejeita corretamente).GET /mercadopago-webhook/→ 405.- Teste real de integração: criei uma cobrança PIX real de R$1,00 direto na API do Mercado Pago com as credenciais de produção (pagamento id
169589827359,external_referencecom usuário fake999999pra nunca poder creditar ninguém de verdade mesmo que alguém pague por engano) — resposta HTTP 201,qr_codeeqr_code_base64presentes. Confirma que a credencial funciona pra essa conta/contexto e que o parsing da resposta está correto. Não paguei o PIX de propósito (não precisa, e evita gerar crédito real de teste); ele expira sozinho.
Pendente / decisão do dono
- Gateway ainda está em
pagseguropor padrão — nada muda pro usuário final até o dono trocar em/admin/imoveis/configuracaopagamento/. - Ainda não existe uma compra real de créditos completada via PIX ponta-a-ponta (webhook nunca recebeu notificação real ainda). Recomendo trocar o config pra
mercadopago, fazer uma compra real pequena e confirmar que os créditos caem na conta — só aí dar como 100% validado em produção.