# 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
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