Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Vendas Online com Mercado Pago - #4 Checkout Transparente

30/04/2026

Neste tutorial implementaremos o checkout transparente do Mercado Pago.

Checkout Transparente do Mercado Pago.

O checkout transparente do Mercado Pago é uma solução de pagamento onde o cliente finaliza a compra sem sair do site ou sistema da empresa. Diferente do checkout tradicional, em que o usuário é redirecionado para outra página, no modelo transparente toda a experiência acontece dentro do próprio ambiente da loja. Isso gera mais confiança, melhora a experiência do usuário e pode aumentar significativamente a taxa de conversão das vendas.

index.php

Abriga o html e o formulário de cartão de crédito:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
</head>
<body>

    <div id="cardPaymentBrick_container"></div>


    <script src="https://sdk.mercadopago.com/js/v2"></script>
    <script src="javascript.js"></script>
</body>
</html>

javascript.js

Interliga o frontend com o backend:

(function(win,doc){
    'use stict';

    const mp = new MercadoPago("YOUR_PRODUCTION_PUBLIC_KEY");
    const bricksBuilder = mp.bricks();

    const renderCardPaymentBrick = async (bricksBuilder) => {
        const settings = {
            initialization: {
                amount: 10.99, // valor total a ser pago
            },
            callbacks: {
                onReady: () => {
                    /*
                     Callback chamado quando o Brick estiver pronto.
                     Aqui podem ser ocultos loadings do site, por exemplo.
                   */
                },
                onSubmit: (formData, additionalData) => {
                    // callback chamado ao clicar no botão de envio de dados
                    return new Promise((resolve, reject) => {
                        const submitData = {
                            type: "online",
                            total_amount: String(formData.transaction_amount), // deve ser uma string com formato 00.00
                            external_reference: "ext_ref_1234", // identificador da origem da transação.
                            processing_mode: "automatic",
                            transactions: {
                                payments: [
                                    {
                                        amount: String(formData.transaction_amount), // deve ser uma string com formato 00.00
                                        payment_method: {
                                            id: formData.payment_method_id,
                                            type: additionalData.paymentTypeId,
                                            token: formData.token,
                                            installments: formData.installments,
                                        },
                                    },
                                ],
                            },
                            payer: {
                                email: formData.payer.email,
                                identification: formData.payer.identification,
                            },
                        };

                        fetch("/processa.php", {
                            method: "POST",
                            headers: {
                                "Content-Type": "application/json",
                            },
                            body: JSON.stringify(submitData),
                        })
                            .then((response) => response.json())
                            .then((response) => {
                                // receber o resultado do pagamento
                                resolve();
                            })
                            .catch((error) => {
                                // lidar com a resposta de erro ao tentar criar o pagamento
                                reject();
                            });
                    });
                },
                onError: (error) => {
                    // callback chamado para todos os casos de erro do Brick
                    console.error(error);
                },
            },
        };
        window.cardPaymentBrickController = await bricksBuilder.create(
            "cardPayment",
            "cardPaymentBrick_container",
            settings
        );
    };
    renderCardPaymentBrick(bricksBuilder);



})(window,document)

processa.php

Processa o pagamento no backend:

<?php
include('vendor/autoload.php');

use MercadoPago\MercadoPagoConfig;

MercadoPagoConfig::setAccessToken("YOUR_PRODUCTION_KEY");
$dados = json_decode(file_get_contents("php://input"),true);
$token = $dados['transactions']['payments'][0]['payment_method']['token'];

$url = 'https://api.mercadopago.com/v1/orders';

$headers = [
    'Content-Type: application/json',
    'X-Idempotency-Key: '.uniqid(),
    'Authorization: Bearer YOUR_PRODUCTION_KEY',
];

$body = [
    'type' => 'online',
    'processing_mode' => 'automatic',
    'total_amount' => '10.00',
    'external_reference' => 'ext_ref_1234',
    'payer' => [
        'email' => 'thsites@hotmail.com',
    ],
    'transactions' => [
        'payments' => [
            [
                'amount' => '10.00',
                'payment_method' => [
                    'id' => 'visa',
                    'type' => 'credit_card',
                    'token' => $token,
                    'installments' => 1,
                ],
            ],
        ],
    ],
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Erro cURL: ' . curl_error($ch);
}

curl_close($ch);

$data = json_decode($response, true);

echo "HTTP Status: $httpCode\n";
print_r($data);

Não esqueça nos códigos acima de trocar a production key.

Então é isso, por hoje é só! Fiquem todos com Deus! Sucesso nos códigos e na vida!

Precisa de ajuda na criação de planilhas? webdesignemfoco@gmail.com

Ninguém vem ao Pai, senão por mim. João 14:6

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Vendas Online com Mercado Pago - #3 Checkout Pro
No tutorial de hoje aprenderemos como inserir o checkout pro do Mercado Pago no seu site ou blog, de forma que o cliente pague no próprio site.
Saiba mais!
Mercado Pago
Neste curso aprenderemos como desenvolver pagamentos através do checkout transparente da API do Mercado Pago.
Saiba mais!