Cerebro Studio · Backlog · Changelog
RioNoTeatro • /www/wwwroot/rionoteatro.com.br/docs/changelog/2026/CL-2026-04-27-hotfix-mercadopago-valor-unitario.md • 2026-04-28T02:18:15.421Z

CL-2026-04-27 - Hotfix Mercado Pago valor unitario

Contexto

  • Incidente critico em pedidos Mercado Pago: alguns rascunhos gravavam pedidos.valor com o total do pedido.
  • O checkout Mercado Pago interpreta pedidos.valor como valor unitario e calcula valor * qtd.
  • Isso causou cobranca a maior quando um rascunho contaminado seguia direto para PIX/cartao sem passar por regravacao posterior do checkout.

Impacto confirmado

  • Pedido #73731 - Fanaticos: correto R$40, cobrado R$80, diferenca R$40.
  • Pedido #73767 - As Loucas do Meier: correto R$60, cobrado R$120, diferenca R$60.
  • Pedido #73643 estava suspeito no banco, mas a API do Mercado Pago confirmou cobranca correta de R$40.

Ajustes aplicados

  • pedido.php e pedido_pagseguro.php
  • rascunho proativo passou a enviar valor unitario para gerenciar_pedido_carrinho.
  • config/functions_new.php
  • adicionados helpers para normalizar dinheiro e recuperar valor unitario seguro de pedidos antigos.
  • gerenciar_pedido_carrinho passou a normalizar valor recebido antes de inserir/atualizar rascunho.
  • checkout_pix.php
  • resumo, total do pedido e inicializacao do Brick do Mercado Pago passaram a usar valor unitario protegido.
  • action.php
  • PIX e cartao Mercado Pago passaram a recalcular transaction_amount com valor unitario protegido.
  • se um pedido pendente ainda tiver total salvo em valor, o backend corrige antes de cobrar.

Saneamento operacional

  • Rascunhos pendentes contaminados foram corrigidos para voltar a armazenar valor unitario.
  • Pedidos pagos nao foram alterados automaticamente; os estornos da diferenca foram feitos manualmente pelo admin.

Validacoes

  • php -l config/functions_new.php
  • php -l pedido.php
  • php -l pedido_pagseguro.php
  • php -l action.php
  • php -l checkout_pix.php
  • git diff --check
  • simulacao local pos-hotfix:
  • #73731: total protegido R$40
  • #73767: total protegido R$60