Outros meios de pagamento
Com o Checkout Transparente do Mercado Pago, também é possível oferecer pagamentos com Rapipago e/ou Pago Fácil.
Para obter uma lista detalhada com todos os meios de pagamento disponíveis para integração, envie um GET com seu Access token ao endpoint /v1/payment_methods e execute a requisição ou, se preferir, faça a requisição utilizando os SDKs abaixo.
<?php
MercadoPago\SDK::setAccessToken("ENV_ACCESS_TOKEN");
$payment_methods = MercadoPago::get("/v1/payment_methods");
?>
var mercadopago = require('mercadopago');
mercadopago.configurations.setAccessToken(config.access_token);
var response = await mercadopago.payment_methods.listAll();
var payment_methods = response.body;
MercadoPagoConfig.setAccessToken("ENV_ACCESS_TOKEN");
PaymentMethodClient client = new PaymentMethodClient();
client.list();
require 'mercadopago'
sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN')
payment_methods_response = sdk.payment_methods.get()
payment_methods = payment_methods_response[:response]
using MercadoPago.Client.PaymentMethod;
using MercadoPago.Config;
using MercadoPago.Resource;
using MercadoPago.Resource.PaymentMethod;
MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN";
var client = new PaymentMethodClient();
ResourcesList<PaymentMethod> paymentMethods = await client.ListAsync();
import mercadopago
sdk = mercadopago.SDK("ACCESS_TOKEN")
payment_methods_response = sdk.payment_methods().list_all()
payment_methods = payment_methods_response["response"]
curl -X GET \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
'https://api.mercadopago.com/v1/payment_methods' \
Para oferecer pagamentos com Rapipago e/ou Pago Fácil, siga as etapas abaixo.
Importar MercadoPago.js
Para realizar a integração do Checkout Transparente é preciso capturar os dados necessários para processar o pagamento.
Esta captura é feita a partir da inclusão da biblioteca MercadoPago.js em seu projeto, seguida do formulário de pagamento. Utilize o código abaixo para importar a biblioteca MercadoPago.js antes de adicionar o formulário de pagamento.
<body>
<script src="https://sdk.mercadopago.com/js/v2"></script>
</body>
npm install @mercadopago/sdk-js
Configurar credencial
As credenciais são senhas únicas com as quais identificamos uma integração na sua conta. Servem para capturar pagamentos em lojas virtuais e outras aplicações de forma segura.
Esta é a primeira etapa de uma estrutura completa de código que deverá ser seguida para a correta integração dos pagamentos. Atente-se aos blocos abaixo para adicionar aos códigos conforme indicado.
<script>
const mp = new MercadoPago("YOUR_PUBLIC_KEY");
</script>
import { loadMercadoPago } from "@mercadopago/sdk-js";
await loadMercadoPago();
const mp = new window.MercadoPago("YOUR_PUBLIC_KEY");
Adicionar formulário de pagamento
Com a biblioteca MercadoPago.js incluída, adicione o formulário de pagamento abaixo ao seu projeto para garantir a captura segura dos dados dos compradores. Nesta etapa é importante utilizar a lista que você consultou para obter os meios de pagamento disponíveis para criar as opções de pagamento que deseja oferecer.
<form id="form-checkout" action="/process_payment" method="post">
<div>
<div>
<label for="payerFirstName">Nome</label>
<input id="form-checkout__payerFirstName" name="payerFirstName" type="text">
</div>
<div>
<label for="payerLastName">Sobrenome</label>
<input id="form-checkout__payerLastName" name="payerLastName" type="text">
</div>
<div>
<label for="email">E-mail</label>
<input id="form-checkout__email" name="email" type="text">
</div>
<div>
<label for="identificationType">Tipo de documento</label>
<select id="form-checkout__identificationType" name="identificationType" type="text"></select>
</div>
<div>
<label for="identificationNumber">Número do documento</label>
<input id="form-checkout__identificationNumber" name="identificationNumber" type="text">
</div>
</div>
<div>
<div>
<input type="hidden" name="transactionAmount" id="transactionAmount" value="100">
<input type="hidden" name="description" id="description" value="Nome do Produto">
<br>
<button type="submit">Pagar</button>
</div>
</div>
</form>
Obter tipos de documento
Após configurar a credencial, é preciso obter os tipos de documento que farão parte do preenchimento do formulário para pagamento.
Incluindo o elemento do tipo select
com o id: id = docType
que está no formulário, será possível preencher automaticamente as opções disponíveis quando chamar a função a seguir:
(async function getIdentificationTypes() {
try {
const identificationTypes = await mp.getIdentificationTypes();
const identificationTypeElement = document.getElementById('form-checkout__identificationType');
createSelectOptions(identificationTypeElement, identificationTypes);
} catch (e) {
return console.error('Error getting identificationTypes: ', e);
}
})();
function createSelectOptions(elem, options, labelsAndKeys = { label: "name", value: "id" }) {
const { label, value } = labelsAndKeys;
elem.options.length = 0;
const tempOptions = document.createDocumentFragment();
options.forEach(option => {
const optValue = option[value];
const optLabel = option[label];
const opt = document.createElement('option');
opt.value = optValue;
opt.textContent = optLabel;
tempOptions.appendChild(opt);
});
elem.appendChild(tempOptions);
}
Enviar pagamento
Ao finalizar a inclusão do formulário de pagamento e obter os tipos de documento, é necessário encaminhar o e-mail do comprador, tipo e número de documento, o meio de pagamento utilizado e o detalhe do valor a ser pago utilizando nossa API de Pagamentos ou um de nossos SDKs.
Para configurar pagamentos com Rapipago e/ou Pago Fácil, envie um POST com os parâmetros requeridos ao endpoint /v1/payments e execute a requisição ou, se preferir, utilize um de nossos SDKs abaixo.
<?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 = "rapipago";
$payment->payer = array(
"email" => "test_user_19653727@testuser.com"
);
$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: 'rapipago',
payer: {
email: 'test_user_3931694@testuser.com'
}
};
mercadopago.payment.create(payment_data).then(function (data) {
}).catch(function (error) {
});
import com.mercadopago.*;
MercadoPago.SDK.configure("ENV_ACCESS_TOKEN");
Payment payment = new Payment();
payment.setTransactionAmount(100f)
.setDescription("Título do produto")
.setPaymentMethodId("rapipago")
.setPayer(new Payer("test_user_19653727@testuser.com"));
payment.save();
require 'mercadopago'
sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN')
payment_request = {
transaction_amount: 100,
description: 'Título do produto',
payment_method_id: 'rapipago',
payer: {
email: 'test_user_19653727@testuser.com',
}
}
payment_response = sdk.payment.create(payment_request)
payment = payment_response[:response]
using MercadoPago.Config;
using MercadoPago.Client.Payment;
using MercadoPago.Resource.Payment;
MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN";
var request = new PaymentCreateRequest
{
TransactionAmount = 100,
Description = "Título do produto",
PaymentMethodId = "rapipago",
Payer = new PaymentPayerRequest
{
Email = "test_user_19653727@testuser.com",
},
};
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": "rapipago",
"payer": {
"email": "test_user_19653727@testuser.com"
}
}
payment_response = sdk.payment().create(payment_data)
payment = payment_response["response"]
curl -X POST \
'https://api.mercadopago.com/v1/payments' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
-d '{
transaction_amount: 100,
description: "Título do produto",
payment_method_id: "rapipago",
payer: { email: "test_user_19653727@testuser.com" }
}'
A resposta mostrará o status pendente até que o comprador realize o pagamento. Além disso, na resposta à requisição, o parâmetro external_resource_url
retornará uma URL que contém as instruções para que o comprador realize o pagamento. Você pode redirecioná-lo para este mesmo link para conclusão do fluxo de pagamento.
json
[
{
...,
"id": 5466310457,
"status": "pending",
"status_detail": "pending_waiting_payment",
...,
"transaction_details": {
"net_received_amount": 0,
"total_paid_amount": 100,
"overpaid_amount": 0,
"external_resource_url": "https://www.mercadopago.com/mla/payments/ticket/helper?payment_id=123456789&payment_method_reference_id= 123456789&caller_id=123456",
"installment_amount": 0,
"financial_institution": null,
"payment_method_reference_id": "1234567890"
}
}
]
Data de vencimento
É possível alterar a data de vencimento para pagamentos em dinheiro enviando o campo date_of_expiration
na requisição de criação do pagamento. A data configurada deve ser entre 1 e 30 dias a partir da data de emissão do pagamento.
Para alterar a data de vencimento, utilize um dos códigos disponíveis abaixo.
$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
payment.setDateOfExpiration("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.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",
O prazo de creditação leva entre 1 e 2 dias úteis de acordo com o meio de pagamento. Por isso recomendamos que você defina a data de expiração com no mínimo 3 dias para garantir que o pagamento seja feito.
Cancelar pagamento
Para evitar problemas de cobrança, é importante cancelar os pagamentos vencidos. Além disso, tenha em conta que é possível cancelar apenas os pagamentos que se encontram pendentes ou em processo.
Se o vencimento de um pagamento ocorre em 30 dias, o cancelamento é automático e o status final do mesmo será cancelado
ou expirado
. Para mais informações, veja a seção Reembolsos e cancelamentos.
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz