Receba um pagamento com cartão

Com o MercadoPago é possível capturar os dados do cartão de forma segura através do tokenizer.

Passo 1: Incorporar o viewport

Defina o viewport adicionando o seguinte código dentro da tag <head> de seu site:

Html

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

Passo 2: Incorporar o código javascript

Este fragmento de código javascript criará um botão de pagamento. Quando o comprador pressionar o botão aparecerá o checkout. Inclua o seguinte código no lugar onde deverá estar o botão dentro de seu site:

Html

<form action="/processar-pagamento" method="POST">
  <script
    src="https://www.mercadopago.com.br/integrations/v1/web-tokenize-checkout.js"
    data-public-key="ENV_PUBLIC_KEY"
    data-transaction-amount="100.00">
  </script>
</form>

Nota

Você pode encontrar seu public key na página de credenciais

Paso 3: Obter todos os dados

O Web Tokenize Checkout fará um POST para a URL que tenha definido no atributo action no fragmento de código javascript (Exemplo em: /processar-pagamento) com certos dados. Você deve utilizar os seguintes dados para realizar o pagamento.

Os dados são:

Dado Descrição
token  Identificador único do cartão tokenizado
payment_method_id Forma de pagamento escolhida pelo comprador
installments Quantidade de parcelas escolhidas pelo comprador
issuer_id ID emissor do cartão do comprador

Você não receberá o transaction_amount nem o payer.email por questões de segurança.

<?php
  $token = $_REQUEST["token"];
  $payment_method_id = $_REQUEST["payment_method_id"];
  $installments = $_REQUEST["installments"];
  $issuer_id = $_REQUEST["issuer_id"];
?>
String token = request.getParameter("token");
String payment_method_id = request.getParameter("payment_method_id");
Int installments = request.getParameter("installments");
Int issuer_id = request.getParameter("issuer_id");
const token = req.body.token;
const payment_method_id = req.body.payment_method_id;
const installments = req.body.installments;
const issuer_id = req.body.issuer_id;
token = request.body.token
payment_method_id = request.body.payment_method_id
installments = request.body.installments
issuer_id = request.body.issuer_id
token = Request["token"]
payment_method_id = Request["payment_method_id"]
installments = Request["installments"]
issuer_id = Request["issuer_id"]

Passo 4: Realizar o pagamento

Para realizar o pagamento, deverá efetuar uma chamada a API utilizando o SDK do Mercado Pago que corresponda a linguagem de programação que está utilizando em seu site.

Somente deverá incluir uma chamada à API incluindo os dados que recebeu do checkout:

<?php  
    MercadoPago\SDK::setAccessToken("ENV_ACCESS_TOKEN");
    //...
    $payment = new MercadoPago\Payment();
    $payment->transaction_amount = 170;
    $payment->token = $token;
    $payment->description = "Incredible Wool Coat";
    $payment->installments = $installments;
    $payment->payment_method_id = $payment_method_id;
    $payment->issuer_id = $issuer_id;
    $payment->payer = array(
    "email" => "sebastian@yahoo.com"
    );
    // Armazena e envia o pagamento
    $payment->save();
    //...
    // Imprime o status do pagamento
    echo $payment->status;
    //...
?>
MercadoPago.SDK.setAccessToken("ENV_ACCESS_TOKEN");
//...
Payment payment = new Payment();
payment.setTransactionAmount(170)
       .setToken(token)
       .setDescription("Incredible Wool Coat")
       .setInstallments(installments)
       .setPaymentMethodId(payment_method_id)
       .setIssuerId(issuer_id)
       .setPayer(new Payer()
         .setEmail("sebastian@yahoo.com"));
// Armazena e envia o pagamento
payment.save();
//...
// Imprime o status do pagamento
System.out.println(payment.getStatus());
//...
var mercadopago = require('mercadopago');
mercadopago.configurations.setAccessToken(config.access_token);

var payment_data = {
  transaction_amount: 170,
  token: token,
  description: 'Incredible Wool Coat',
  installments: installments,
  payment_method_id: payment_method_id,
  issuer_id: issuer_id,
  payer: {
    email: 'sebastian@yahoo.com'
  }
};

// Armazena e envia o pagamento
mercadopago.payment.save(payment).then(function (data) {
  // ...    
  // Imprime o status do pagamento
  Console.log(payment.status);
}).catch(function (error) {
  // ...
});

require 'mercadopago'
MercadoPago::SDK.access_token = "ENV_ACCESS_TOKEN";

payment = MercadoPago::Payment.new()
payment.transaction_amount = 170
payment.token = token
payment.description = 'Incredible Wool Coat'
payment.installments = installments
payment.payment_method_id = payment_method_id
payment.issuer_id = issuer_id
payment.payer = {
  email: "sebastian@yahoo.com"
}
# Armazena e envia o pagamento
payment.save()

using MercadoPago;
using MercadoPago.DataStructures.Payment;
using MercadoPago.Resources;
// ...
MercadoPago.SDK.SetAccessToken(ENV_ACCESS_TOKEN);
//...
Payment payment = new Payment()
{
    TransactionAmount = float.Parse("170"),
    Token = token,
    Description = "Incredible Wool Coat",
    Installments = installments,
    PaymentMethodId = payment_method_id,
    IssuerId = issuer_id,
    Payer = new Payer(){
        Email = "sebastian@yahoo.com"
    }
};
// Armazena e envia o pagamento
payment.Save();
//...
// Imprime o status do pagamento
Console.log(payment.Status);
//...

Os campos obrigatórios para envio são o token, transaction_amount, payment_method_id e o payer.email.

Retorno:

Json

{
    "status": "approved",
    "status_detail": "accredited",
    "id": 3055677,
    "date_approved": "2017-02-23T00:01:10.000-04:00",
    "payer": {
        ...
    },
    "payment_method_id": "master",
    "payment_type_id": "credit_card",
    "refunds": [],
    ...
}

Recomendações adicionais

Cartões de teste

Para realizar pagamentos de teste (com suas credenciais de TEST), é necessário que utilize cartões de teste.

Promoções

Recomendamos incluir o link de promoções do Mercado Pago, ou então implementar um de nossos banners de formas de pagamento.

La búsqueda no arrojó ningún resultado.

Verifica la la ortografía de los términos de búsqueda o prueba con otras palabras clave.