Recentemente estava tentando integrar o Mercado Pago (Checkout Pro). Por já ter integrado a eles a uns bons anos atrás em outros projetos, achei que seria mais simples...
Bom, não foi 😅
Neste post, compartilho os principais problemas que enfrentei com o modo sandbox do Mercado Pago e como consegui resolver cada um deles.
A ideia era criar um link de pagamento para o usuário. Exemplo:
- Pacote 1: R$ 100,00
Ao pagar, o sistema adiciona o pacote na conta do usuário.
A questão é que:
1. Não encontrava o Access Token
Para ver as credenciais:
- Criei uma conta no mercado livre
- Criei uma aplicação no painel de desenvolvedor
- Criei uma conta de vendedor e outra de comprador
- Copiei o Access Token da conta de vendedor (ex:
TEST-...
)
2. Gerei o link de pagamento, mas não conseguia pagar
Fazia tudo certinho, mas ao acessar o link com uma conta de teste compradora, era redirecionado para uma tela pedindo confirmação de email, que obviamente não existe no sandbox.
3. Descobri que o comprador também precisa ter uma aplicação (!)
Esse foi o ponto de virada: mesmo sendo uma conta de teste COMPRADORA, ela precisa ter uma aplicação cadastrada no painel de desenvolvedores. Sem isso, os pagamentos não funcionam corretamente no checkout.
Encontrei essa informação... (no Reddit).
✅ Solução passo a passo
1. Crie duas contas de teste no painel sandbox
https://www.mercadopago.com.br/developers/panel/sandbox
- Uma como vendedor (para gerar o link e receber o pagamento)
- Outra como comprador (para simular o pagamento)
2. Crie uma aplicação nas DUAS contas
- Na conta vendedor, para obter o Access Token
- Na conta comprador, para que ela consiga usar o checkout pro
3. Gere a preference normalmente
const result = await preference.create({
body: {
items: [
{
title: 'Pacote 1',
quantity: 1,
unit_price: 100,
currency_id: 'BRL',
},
],
back_urls: {
success: 'https://seusite.com/sucesso',
failure: 'https://seusite.com/falha',
pending: 'https://seusite.com/pendente',
},
auto_return: 'approved',
notification_url: 'https://seusite.com/webhook/mercado-pago',
external_reference: `${userId}-${Date.now()}`,
},
});
4. Faça o pagamento com a conta de comprador
- Use o botão "Saldo em conta" se quiser evitar qualquer bloqueio com cartão
- Se quiser usar cartão de teste, confirme a conta de email da conta test_user manualmente
Se esse post te ajudou, deixe um comentário ou compartilhe com quem estiver precisando.
Top comments (0)