Como testar pagamentos do Mercado Pago em sandbox (sem perder horas)
Guia definitivo pra testar Checkout Pro do Mercado Pago no sandbox. Evite os erros mais comuns que travam o checkout de teste.
O sandbox do Mercado Pago parece simples. Até você tentar usar.
Se você já tentou testar pagamentos no sandbox do Mercado Pago e ficou preso em erros como "Uma das partes com as quais você está tentando efetuar o pagamento é de teste" ou em páginas de erro genérico sem nenhuma explicação, este guia é pra você.
Passamos horas debugando esses problemas. Documentamos tudo pra que você não precise passar pelo mesmo.
O problema principal: mistura de usuários
O Mercado Pago tem uma regra rígida: você não pode misturar usuários reais com usuários de teste na mesma transação. Mas a documentação não deixa claro como isso afeta cada cenário.
Aqui está o que realmente acontece:
| Seller | Buyer | Resultado |
|---|---|---|
Token TEST- (usuário real em modo teste) | Test user logado no sandbox | Bloqueado |
Token OAuth APP_USR- de test user | Test user logado no sandbox | Bloqueado (403 no sandbox) |
Token TEST- (usuário real em modo teste) | Convidado com cartão de teste | Funciona |
Por que o OAuth com test user não funciona no sandbox
Este é o ponto que a documentação não explica bem.
Quando você faz o fluxo OAuth do Mercado Pago, você usa client_id e client_secret da sua aplicação. Essas credenciais são sempre de produção -- não existem credenciais OAuth de teste.
Isso significa que o token OAuth gerado (APP_USR-...) é um token de produção, mesmo que o seller seja um test user. Quando você tenta usar esse token pra criar uma preferência e acessar o sandbox_init_point, o sandbox retorna 403 Forbidden.
# Token OAuth de test user → preferência criada → sandbox rejeita com 403
https://sandbox.mercadopago.com.br/checkout/v1/redirect/.../error/
A solução que funciona
1. Use o token TEST- da sua aplicação
No painel do Mercado Pago, vá em Credenciais de teste da sua aplicação e copie o Access Token de teste. Ele começa com TEST-.
MERCADOPAGO_DEV_ACCESS_TOKEN=TEST-<APP_ID>-<TIMESTAMP>-<HASH>-<USER_ID>
Use esse token no backend pra criar as preferências de checkout em ambiente de desenvolvimento.
2. Pague como convidado no sandbox
Esta é a parte crucial: não logue com nenhuma conta do Mercado Pago na página de checkout do sandbox. Pague como convidado.
3. Use cartões de teste
Na tela de pagamento, escolha cartão de crédito e use estes dados:
| Campo | Valor |
|---|---|
| Número | 5031 4332 1540 6351 |
| Nome no cartão | APRO |
| Validade | Qualquer data futura (ex: 11/30) |
| CVV | 123 |
| CPF | 12345678909 |
| Qualquer email válido |
4. Controle o resultado pelo nome no cartão
O Mercado Pago usa o nome no cartão pra determinar o resultado do pagamento no sandbox:
| Nome | Resultado |
|---|---|
APRO | Pagamento aprovado |
OTHE | Rejeitado |
CONT | Pagamento pendente |
CALL | Rejeitado (ligar para autorização) |
FUND | Rejeitado (saldo insuficiente) |
SECU | Rejeitado (código de segurança inválido) |
EXPI | Rejeitado (data de validade) |
5. Outros cartões de teste
| Bandeira | Número |
|---|---|
| Visa | 4509 9535 6623 3704 |
| Mastercard | 5031 4332 1540 6351 |
| American Express | 3711 803032 57522 |
| Elo | 5067 2686 5051 7446 |
Erros comuns e como resolver
"Uma das partes com as quais você está tentando efetuar o pagamento é de teste"
Causa: Você está logado com um test user no browser e tentando pagar em uma preferência criada com token TEST- (usuário real em modo teste). O MP detecta a mistura real + teste e bloqueia.
Solução: Abra o checkout em uma janela anônima. Não logue no MP. Pague como convidado com cartão de teste.
Página de erro genérico no sandbox (sem mensagem)
Causa: A preferência foi criada com um token OAuth (APP_USR-) obtido de um test user. O sandbox rejeita tokens de produção.
Solução: Use o token TEST- da aplicação em vez do token OAuth.
Test users do app errado
Causa: Se você cria test users via API, o test user pertence à aplicação cujo token foi usado. Se usou o token de outra aplicação (ou ferramenta), o test user não funciona com sua app.
Solução: Crie test users usando o token da sua própria aplicação:
curl -X POST "https://api.mercadopago.com/users/test" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SEU_TEST_ACCESS_TOKEN" \
-d '{"site_id": "MLB", "description": "Buyer de teste"}'
Implementação no backend (Node.js)
Se você está construindo um marketplace com Checkout Pro, aqui está o pattern que usamos:
// Em dev, usa o token TEST- da plataforma
// Em produção, usa o token OAuth do seller
private resolveAccessToken(tenantToken: string | null): string | null {
if (process.env.NODE_ENV !== 'production') {
const devToken = process.env.MERCADOPAGO_DEV_ACCESS_TOKEN;
if (devToken) return devToken;
}
return tenantToken ?? null;
}
E pra decidir entre sandbox_init_point e init_point:
const isDevMode = process.env.NODE_ENV !== 'production';
const checkoutUrl = isDevMode
? preference.sandbox_init_point || preference.init_point
: preference.init_point;
Checklist rápido
Antes de testar, confirme:
- Token
TEST-configurado no ambiente de desenvolvimento - Checkout abre em
sandbox.mercadopago.com.br(nãowww.mercadopago.com.br) - Browser em janela anônima (sem conta MP logada)
- Cartão de teste com nome
APROpra aprovar - Webhook URL acessível publicamente (use ngrok em desenvolvimento local)
Conclusão
O sandbox do Mercado Pago funciona, mas tem armadilhas que a documentação oficial não cobre bem. A regra de ouro é simples: use o token TEST-, pague como convidado, e use cartões de teste.
Se você está integrando pagamentos e perdeu tempo com esses erros, esperamos que este guia tenha economizado algumas horas do seu dia.