Exemplo de código (todos os meios de pagamento)
Para facilitar e otimizar o seu processo de integração, veja abaixo um exemplo completo de como incluir todos os meios de pagamento com o Payment Brick.
Crie sua preferência
Server-Side
Necessário para Conta Mercado Pago.
<?php
// SDK do Mercado Pago
require __DIR__ . '/vendor/autoload.php';
// Adicione as credenciais
MercadoPago\SDK::setAccessToken('PROD_ACCESS_TOKEN');
// Cria um objeto de preferência
$preference = new MercadoPago\Preference();
// Cria um item na preferência
$item = new MercadoPago\Item();
$item->title = 'Meu produto';
$item->quantity = 1;
$item->unit_price = 75.56;
$preference->items = array($item);
// o $preference->purpose = 'wallet_purchase'; permite apenas pagamentos logados
// para permitir pagamentos como guest, você pode omitir essa propriedade
$preference->purpose = 'wallet_purchase';
$preference->save();
?>
// SDK do Mercado Pago
const mercadopago = require ('mercadopago');
// Adicione as credenciais
mercadopago.configure({
access_token: 'PROD_ACCESS_TOKEN'
});
// Cria um objeto de preferência
let preference = {
// o "purpose": "wallet_purchase" permite apenas pagamentos logados
// para permitir pagamentos como guest, você pode omitir essa propriedade
"purpose": "wallet_purchase",
"items": [
{
"id": "item-ID-1234",
"title": "Meu produto",
"quantity": 1,
"unit_price": 75.76
}
]
};
mercadopago.preferences.create(preference)
.then(function (response) {
// Este valor é o preferenceId que será enviado para o Brick na inicialização
const preferenceId = response.body.id;
}).catch(function (error) {
console.log(error);
});
// SDK do Mercado Pago
import com.mercadopago.MercadoPagoConfig;
// Adicione as credenciais
MercadoPagoConfig.setAccessToken("PROD_ACCESS_TOKEN");
// Cria um objeto de preferência
PreferenceClient client = new PreferenceClient();
// Cria um item na preferência
List<PreferenceItemRequest> items = new ArrayList<>();
PreferenceItemRequest item =
PreferenceItemRequest.builder()
.title("Meu produto")
.quantity(1)
.unitPrice(new BigDecimal("100"))
.build();
items.add(item);
PreferenceRequest request = PreferenceRequest.builder()
// o .purpose('wallet_purchase') permite apenas pagamentos logados
// para permitir pagamentos como guest, você pode omitir essa linha
.purpose('wallet_purchase')
.items(items).build();
client.create(request);
# SDK do Mercado Pago
require 'mercadopago'
# Adicione as credenciais
sdk = Mercadopago::SDK.new('PROD_ACCESS_TOKEN')
# Cria um objeto de preferência
preference_data = {
# o purpose: 'wallet_purchase', permite apenas pagamentos logados
# para permitir pagamentos como guest, você pode omitir essa propriedade
purpose: 'wallet_purchase',
items: [
{
title: 'Meu produto',
unit_price: 75.56,
quantity: 1
}
]
}
preference_response = sdk.preference.create(preference_data)
preference = preference_response[:response]
# Este valor é o preferenceId que você usará no HTML na inicialização no Brick
@preference_id = preference['id']
// SDK do Mercado Pago
using MercadoPago.Config;
// Adicione as credenciais
MercadoPagoConfig.AccessToken = "PROD_ACCESS_TOKEN";
// Cria o objeto de request da preferência
var request = new PreferenceRequest
{
// o Purpose = 'wallet_purchase', permite apenas pagamentos logados
// para permitir pagamentos como guest, você pode omitir essa propriedade
Purpose = 'wallet_purchase',
Items = new List<PreferenceItemRequest>
{
new PreferenceItemRequest
{
Title = "Meu produto",
Quantity = 1,
CurrencyId = "BRL",
UnitPrice = 75.56m,
},
},
};
// Cria a preferência usando o client
var client = new PreferenceClient();
Preference preference = await client.CreateAsync(request);
# SDK do Mercado Pago
import mercadopago
# Adicione as credenciais
sdk = mercadopago.SDK("PROD_ACCESS_TOKEN")
# Cria um item na preferência
preference_data = {
# o "purpose": "wallet_purchase", permite apenas pagamentos logados
# para permitir pagamentos como guest, você pode omitir essa propriedade
"purpose": "wallet_purchase",
"items": [
{
"title": "My Item",
"quantity": 1,
"unit_price": 75.76
}
]
}
preference_response = sdk.preference().create(preference_data)
preference = preference_response["response"]
curl -X POST \
'https://api.mercadopago.com/checkout/preferences' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-H 'Authorization: Bearer **PROD_ACCESS_TOKEN**' \
-d '{
"purpose": "wallet_purchase",
"items": [
{
"title": "Meu produto",
"quantity": 1,
"unit_price": 75.76
}
]
}'
Configure a integração
Client-Side
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bricks</title>
</head>
<body>
<div id="paymentBrick_container"></div>
<script src="https://sdk.mercadopago.com/js/v2"></script>
<script>
const mp = new MercadoPago('YOUR_PUBLIC_KEY');
const bricksBuilder = mp.bricks();
const renderPaymentBrick = async (bricksBuilder) => {
const settings = {
initialization: {
/*
"amount" é o valor total a ser pago
por todos os meios de pagamento com exceção da Conta Mercado Pago,
que tem seu valor de processamento determinado no backend através do "preferenceId"
*/
amount: 100, // valor do processamento a ser realizado
preferenceId: '<PREFERENCE_ID>', // preferenceId gerado no backend
},
customization: {
paymentMethods: {
creditCard: 'all',
debitCard: 'all',
ticket: 'all',
},
},
callbacks: {
onReady: () => {
/*
Callback chamado quando o Brick estiver pronto.
Aqui você pode ocultar loadings do seu site, por exemplo.
*/
},
onSubmit: ({ selectedPaymentMethod, formData }) => {
// callback chamado ao clicar no botão de submissão dos dados
return new Promise((resolve, reject) => {
let url = undefined;
if (selectedPaymentMethod === 'credit_card' || selectedPaymentMethod === 'debit_card') {
url = 'process_payment_card';
} else if (selectedPaymentMethod === 'ticket') {
url = 'process_payment_ticket';
}
if (url) {
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(formData)
})
.then((response) => {
// receber o resultado do pagamento
resolve();
})
.catch((error) => {
// lidar com a resposta de erro ao tentar criar o pagamento
reject();
})
} else if (selectedPaymentMethod === 'wallet_purchase') {
// wallet_purchase (Conta Mercado Pago) não precisa ser enviado pelo backend
resolve();
} else {
reject();
}
});
},
onError: (error) => {
// callback chamado para todos os casos de erro do Brick
console.error(error);
},
},
};
window.paymentBrickController = await bricksBuilder.create(
'payment',
'paymentBrick_container',
settings
);
};
renderPaymentBrick(bricksBuilder);
</script>
</body>
</html>
Enviar pagamento ao Mercado Pago
Server-Side
Os pagamentos com Conta Mercado Pago e Parcelamento sem cartão de crédito não precisam ser enviados via backend. Caso o usuário selecione esta opção como meio de pagamento, a
preferenceId
enviada na inicialização do Brick é responsável por redirecionar o comprador ao site do Mercado Pago, onde será feito o pagamento diretamente em nosso site. Para redirecionar o comprador de volta para o seu site, você pode configurar as back_urls
como descrito
neste artigo.
Para o endpoint
/process_payment_card
:<?php require_once 'vendor/autoload.php'; MercadoPago\SDK::setAccessToken("YOUR_ACCESS_TOKEN"); $payment = new MercadoPago\Payment(); $payment->transaction_amount = (float)$_POST['transactionAmount']; $payment->token = $_POST['token']; $payment->description = $_POST['description']; $payment->installments = (int)$_POST['installments']; $payment->payment_method_id = $_POST['paymentMethodId']; $payment->issuer_id = (int)$_POST['issuer']; $payer = new MercadoPago\Payer(); $payer->email = $_POST['cardholderEmail']; $payer->identification = array( "type" => $_POST['identificationType'], "number" => $_POST['identificationNumber'] ); $payer->first_name = $_POST['cardholderName']; $payment->payer = $payer; $payment->save(); $response = array( 'status' => $payment->status, 'status_detail' => $payment->status_detail, 'id' => $payment->id ); echo json_encode($response); ?>
Encontre o estado do pagamento no campo status.
var mercadopago = require('mercadopago'); mercadopago.configurations.setAccessToken("YOUR_ACCESS_TOKEN"); var payment_data = { amount: req.body.amount, ... } mercadopago.payment.save(payment_data) .then(function(response) { const { status, status_detail, id } = response.body; res.status(response.status).json({ status, status_detail, id }); }) .catch(function(error) { console.error(error); });
Encontre o estado do pagamento no campo status.
PaymentClient client = new PaymentClient(); PaymentCreateRequest paymentCreateRequest = PaymentCreateRequest.builder() .transactionAmount(request.getTransactionAmount()) .token(request.getToken()) .description(request.getDescription()) .installments(request.getInstallments()) .paymentMethodId(request.getPaymentMethodId()) .payer( PaymentPayerRequest.builder() .email(request.getPayer().getEmail()) .firstName(request.getPayer().getFirstName()) .identification( IdentificationRequest.builder() .type(request.getPayer().getIdentification().getType()) .number(request.getPayer().getIdentification().getNumber()) .build()) .build()) .build(); client.create(paymentCreateRequest);
Encontre o estado do pagamento no campo status.
require 'mercadopago' sdk = Mercadopago::SDK.new('YOUR_ACCESS_TOKEN') payment_data = { transaction_amount: params[:transactionAmount].to_f, token: params[:token], description: params[:description], installments: params[:installments].to_i, payment_method_id: params[:paymentMethodId], payer: { email: params[:cardholderEmail], identification: { type: params[:identificationType], number: params[:identificationNumber] }, first_name: params[:cardholderName] } } payment_response = sdk.payment.create(payment_data) payment = payment_response[:response] puts payment
Encontre o estado do pagamento no campo status.
using System; using MercadoPago.Client.Common; using MercadoPago.Client.Payment; using MercadoPago.Config; using MercadoPago.Resource.Payment; MercadoPagoConfig.AccessToken = "YOUR_ACCESS_TOKEN"; var paymentRequest = new PaymentCreateRequest { TransactionAmount = decimal.Parse(Request["transactionAmount"]), Token = Request["token"], Description = Request["description"], Installments = int.Parse(Request["installments"]), PaymentMethodId = Request["paymentMethodId"], Payer = new PaymentPayerRequest { Email = Request["cardholderEmail"], Identification = new IdentificationRequest { Type = Request["identificationType"], Number = Request["identificationNumber"], }, FirstName = Request["cardholderName"] }, }; var client = new PaymentClient(); Payment payment = await client.CreateAsync(paymentRequest); Console.WriteLine(payment.Status);
Encontre o estado do pagamento no campo status.
import mercadopago sdk = mercadopago.SDK("ACCESS_TOKEN") payment_data = { "transaction_amount": float(request.POST.get("transaction_amount")), "token": request.POST.get("token"), "description": request.POST.get("description"), "installments": int(request.POST.get("installments")), "payment_method_id": request.POST.get("payment_method_id"), "payer": { "email": request.POST.get("cardholderEmail"), "identification": { "type": request.POST.get("identificationType"), "number": request.POST.get("identificationNumber") } "first_name": request.POST.get("cardholderName") } } payment_response = sdk.payment().create(payment_data) payment = payment_response["response"] print(payment)
Encontre o estado do pagamento no campo status.
curl -X POST \ -H 'accept: application/json' \ -H 'content-type: application/json' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ 'https://api.mercadopago.com/v1/payments' \ -d '{ "transaction_amount": 100, "token": "ff8080814c11e237014c1ff593b57b4d", "description": "Blue shirt", "installments": 1, "payment_method_id": "visa", "issuer_id": 310, "payer": { "email": "test@test.com" } }'
Encontre o estado do pagamento no campo status.