# Como Verificar Status do Pagamento PIX Este guia mostra como implementar a verificação de status do pagamento PIX no frontend, incluindo um botão manual e polling automático. ## Endpoint Disponível ``` GET /mercadopago/payment/by-reference/{external_reference} ``` ### Resposta de Exemplo ```json { "has_payment": true, "latest_payment": { "id": 123456789, "status": "approved", "transaction_amount": 0.01, "payment_method_id": "pix", "external_reference": "pedido-123" }, "is_approved": true, "status": "approved", "count": 1 } ``` ## Implementação no Frontend ### Opção 1: Botão Manual para Verificar Status ```html Verificar Pagamento PIX

Status do Pagamento

Aguardando verificação...

``` ### Opção 2: Polling Automático (Recomendado) ```html Aguardando Pagamento PIX

Verificando Pagamento

Aguardando confirmação do pagamento...

Por favor, aguarde enquanto verificamos o status do seu pagamento.

``` ## Como Usar 1. **Após criar a preferência**, salve o `external_reference` 2. **Redirecione o usuário** para o `init_point` do Mercado Pago 3. **Crie uma página de "Aguardando Pagamento"** com o código acima 4. **Passe o `external_reference`** como parâmetro na URL: `?ref=pedido-123` 5. **A página fará polling automático** e redirecionará quando o pagamento for aprovado ## Exemplo de Fluxo ```javascript // 1. Criar preferência const response = await fetch('/mercadopago/preference', { method: 'POST', body: JSON.stringify({ items: [...], external_reference: 'pedido-123', back_urls: { success: 'https://app.saveinmed.com.br/pagamento/sucesso', pending: 'https://app.saveinmed.com.br/pagamento/aguardando?ref=pedido-123', failure: 'https://app.saveinmed.com.br/pagamento/erro' } }) }); const preference = await response.json(); // 2. Redirecionar para o Mercado Pago window.location.href = preference.init_point; // ou sandbox_init_point // 3. Quando o usuário voltar (via back_urls.pending), a página de aguardando // fará polling automático até detectar que o pagamento foi aprovado ``` ## Notas Importantes - O polling verifica a cada 5 segundos - Para automaticamente após 60 verificações (5 minutos) - Redireciona automaticamente quando o pagamento é aprovado - O usuário pode clicar no botão para verificar manualmente a qualquer momento