Pagamentos com Pix
Você pode receber pagamentos instantaneamente com Pix (bank_transfer
) de qualquer banco ou carteira digital, seja através de um código QR ou de um código de pagamento com um prazo de validade para que o pagamento seja efetuado.
json
[
{
"id": "pix",
"name": "PIX",
"payment_type_id": "bank_transfer",
"status": "active",
"secure_thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/pix.gif",
"thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/pix.gif",
"deferred_capture": "does_not_apply",
"settings": [],
"additional_info_needed": []
},
{
"...": "..."
}
]
Cadastrar chave Pix
Para começar a utilizar o Pix como forma de pagamento e se beneficiar de todas as suas funcionalidades, é necessário ter cadastrada uma chave Pix na conta do vendedor para fins de identificação.
Veja abaixo como cadastrar sua chave Pix:
- Baixe o app do Mercado Pago em seu celular.
- Na página inicial de sua conta, clique em Pix no canto superior direito.
- Em seguida, clique em Cadastrar.
- Escolha um ou mais dados que serão cadastrados como chaves Pix e preencha as informações necessárias.
- Valide o cadastro da chave Pix com o código de segurança enviado pelo Mercado Pago. Você poderá ver o status das suas chaves cadastradas e gerenciá-las pelo app do Mercado Pago.
Após cadastrar a chave Pix, siga a documentação para realizar a integração ou, se preferir, veja no Github os exemplos de como adicionar pagamentos Pix integrando com o Checkout Transparente .
Configurar pagamento com Pix
Após cadastrar a chave Pix e capturar os dados para pagamento com o formulário, você deve encaminhar o e-mail do comprador, o tipo e número de documento, o meio de pagamento utilizado e o detalhe do valor.
<?php
require_once 'vendor/autoload.php';
MercadoPago\SDK::setAccessToken("ENV_ACCESS_TOKEN");
$payment = new MercadoPago\Payment();
$payment->transaction_amount = 100;
$payment->description = "Título do produto";
$payment->payment_method_id = "pix";
$payment->payer = array(
"email" => "test@test.com",
"first_name" => "Test",
"last_name" => "User",
"identification" => array(
"type" => "CPF",
"number" => "19119119100"
),
"address"=> array(
"zip_code" => "06233200",
"street_name" => "Av. das Nações Unidas",
"street_number" => "3003",
"neighborhood" => "Bonfim",
"city" => "Osasco",
"federal_unit" => "SP"
)
);
$payment->save();
?>
var mercadopago = require('mercadopago');
mercadopago.configurations.setAccessToken(config.access_token);
var payment_data = {
transaction_amount: 100,
description: 'Título do produto',
payment_method_id: 'pix',
payer: {
email: 'test@test.com',
first_name: 'Test',
last_name: 'User',
identification: {
type: 'CPF',
number: '19119119100'
},
address: {
zip_code: '06233200',
street_name: 'Av. das Nações Unidas',
street_number: '3003',
neighborhood: 'Bonfim',
city: 'Osasco',
federal_unit: 'SP'
}
}
};
mercadopago.payment.create(payment_data).then(function (data) {
}).catch(function (error) {
});
MercadoPagoConfig.setAccessToken("ENV_ACCESS_TOKEN");
PaymentClient client = new PaymentClient();
PaymentCreateRequest paymentCreateRequest =
PaymentCreateRequest.builder()
.transactionAmount(new BigDecimal("100"))
.description("Título do produto")
.paymentMethodId("pix")
.dateOfExpiration(OffsetDateTime.of(2023, 1, 10, 10, 10, 10, 0, ZoneOffset.UTC))
.payer(
PaymentPayerRequest.builder()
.email("test@test.com")
.firstName("Test")
.identification(
IdentificationRequest.builder().type("CPF").number("19119119100").build())
.build())
.build();
client.create(paymentCreateRequest);
require 'mercadopago'
sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN')
payment_request = {
transaction_amount: 100,
description: 'Título do produto',
payment_method_id: 'pix',
payer: {
email: 'test@test.com',
identification: {
type: 'CPF',
number: '19119119100',
}
}
}
payment_response = sdk.payment.create(payment_request)
payment = payment_response[:response]
using MercadoPago.Config;
using MercadoPago.Client.Common;
using MercadoPago.Client.Payment;
using MercadoPago.Resource.Payment;
MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN";
var request = new PaymentCreateRequest
{
TransactionAmount = 105,
Description = "Título do produto",
PaymentMethodId = "pix",
Payer = new PaymentPayerRequest
{
Email = "test@test.com",
FirstName = "Test",
LastName = "User",
Identification = new IdentificationRequest
{
Type = "CPF",
Number = "191191191-00",
},
},
};
var client = new PaymentClient();
Payment payment = await client.CreateAsync(request);
import mercadopago
sdk = mercadopago.SDK("ENV_ACCESS_TOKEN")
payment_data = {
"transaction_amount": 100,
"description": "Título do produto",
"payment_method_id": "pix",
"payer": {
"email": "test@test.com",
"first_name": "Test",
"last_name": "User",
"identification": {
"type": "CPF",
"number": "191191191-00"
},
"address": {
"zip_code": "06233-200",
"street_name": "Av. das Nações Unidas",
"street_number": "3003",
"neighborhood": "Bonfim",
"city": "Osasco",
"federal_unit": "SP"
}
}
}
payment_response = sdk.payment().create(payment_data)
payment = payment_response["response"]
curl -X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
'https://api.mercadopago.com/v1/payments' \
-d '{
"transaction_amount": 100,
"description": "Título do produto",
"payment_method_id": "pix",
"payer": {
"email": "test@test.com",
"first_name": "Test",
"last_name": "User",
"identification": {
"type": "CPF",
"number": "19119119100"
},
"address": {
"zip_code": "06233200",
"street_name": "Av. das Nações Unidas",
"street_number": "3003",
"neighborhood": "Bonfim",
"city": "Osasco",
"federal_unit": "SP"
}
}
}'
A resposta mostrará o estado pendente do pagamento e todas as informações que você precisa para mostrar ao comprador. O valor transaction_data
oferecerá os dados para código QR.
json
{
...,
"id": 5466310457,
"status": "pending",
"status_detail": "pending_waiting_transfer",
...,
"transaction_details": {
"net_received_amount": 0,
"total_paid_amount": 100,
"overpaid_amount": 0,
"external_resource_url": null,
"installment_amount": 0,
"financial_institution": null
},
"point_of_interaction": {
"type": "PIX",
"sub_type": null,
"application_data": {
"name": "NAME_SDK",
"version": "VERSION_NUMBER"
},
"transaction_data": {
"qr_code_base64": "iVBORw0KGgoAAAANSUhEUgAABRQAAAUUCAYAAACu5p7oAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAIABJREFUeJzs2luO3LiWQNFmI+Y/Zd6vRt36KGNXi7ZOBtcagHD4kNLeiLX33v8DAAAAABD879sDAAAAAAA/h6AIAAAAAGSCIgAAAACQCYoAAAAAQCYoAgAAAACZoAgAAAAAZIIiAAAAAJAJigAAAABAJigCAAAAAJmgCAAAAABkgiIAAAAAkAmKAAAAAEAmKAIAAAAAmaAIAAAAAGSCIgAAAACQCYoAAAAAQCYoAgAAAACZoAgAAAAAZIIiAAAAAJAJigAAAABAJigCA...",
"qr_code": "00020126600014br.gov.bcb.pix0117john@yourdomain.com0217additional data520400005303986540510.005802BR5913Maria Silva6008Brasilia62070503***6304E2CA",
"ticket_url": "https://www.mercadopago.com.br/payments/123456789/ticket?caller_id=123456&hash=123e4567-e89b-12d3-a456-426655440000"
}
}
...,
}
Com Pix, você também pode escolher o prazo que o cliente terá para pagar a compra, definindo a validade do código de pagamento enviado a ele após a realização do pedido.
Por padrão, a data de vencimento para pagamentos com Pix é de 24 horas, mas você pode alterá-la enviando o campo date_of_expiration
na solicitação de criação de pagamento. Note que a data configurada deve ser entre 30 minutos e até 30 dias a partir da data de emissão.
$payment->date_of_expiration = "2020-05-30T23:59:59.000-04:00";
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz
date_of_expiration: "2020-05-30T23:59:59.000-04:00",
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz
PaymentCreateRequest paymentCreateRequest = PaymentCreateRequest.builder()
.dateOfExpiration(OffsetDateTime.of(2023, 1, 10, 10, 10, 10, 0, ZoneOffset.UTC))
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz
date_of_expiration: '2020-05-30T23:59:59.000-04:00',
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz
paymentCreateRequest.DateOfExpiration = DateTime.Parse("2020-05-30T23:59:59.000-04:00");
A data usa o formato ISO 8601 format: yyyy-MM-dd'T'HH:mm:ssz
"date_of_expiration": "2020-05-30T23:59:59.000-04:00"
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz
"date_of_expiration": "2020-05-30T23:59:59.000-04:00",
Dados para realizar o pagamento
Para o pagamento ser realizado, você deverá renderizar o código QR vigente que deverá ser utilizado somente uma vez. Você também pode adicionar uma opção para copiar e colar o código de pagamento, o que permitirá realizar a transação a partir de Internet Banking.
Para renderizar o QR code e disponibilizar o recurso de copia e cola, siga os passos abaixo.
- Adicione o
qr_code_base64
para exibir o código QR, como mostra o exemplo abaixo.
html
<img src={`data:image/jpeg;base64,${qr_code_base64}`/>
- Para apresentar a opção que permitirá copiar e colar o código de pagamento, adicione o
qr_code
da seguinte forma:
html
<label for="copiar">Copiar Hash:</label>
<input type="text" id="copiar" value={qr_code}/>
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz