ConfiguraçÔes de preferĂȘncia
VocĂȘ pode adaptar a integração do Wallet Brick ao seu modelo negĂłcio configurando atributos de preferĂȘncia.
Se vocĂȘ oferece compras de valores altos, por exemplo, pode aceitar pagamentos com dois cartĂ”es de crĂ©dito ou ainda excluir meios de pagamento indesejados para a sua operação.
Exemplo de preferĂȘncia completa
json
{
"items": [
{
"id": "item-ID-1234",
"title": "Meu produto",
"currency_id": "BRL",
"picture_url": "https://www.mercadopago.com/org-img/MP3/home/logomp3.gif",
"description": "Descrição do Item",
"category_id": "art",
"quantity": 1,
"unit_price": 75.76
}
],
"payer": {
"name": "<PAYER_NAME_HERE>",
"surname": "<PAYER_SURNAME_HERE>",
"email": "<PAYER_EMAIL_HERE>",
"phone": {
"area_code": "<PAYER_AREA_CODE_HERE>",
"number": "<PAYER_PHONE_NUMBER_HERE>"
},
"identification": {
"type": "<PAYER_DOC_TYPE_HERE>",
"number": "<PAYER_DOC_NUMBER_HERE>"
},
"address": {
"street_name": "Street",
"street_number": 123,
"zip_code": "<PAYER_ZIP_CODE_HERE>"
}
},
"back_urls": {
"success": "https://www.success.com",
"failure": "http://www.failure.com",
"pending": "http://www.pending.com"
},
"auto_return": "approved",
"payment_methods": {
"excluded_payment_methods": [
{
"id": "master"
}
],
"excluded_payment_types": [
{
"id": "ticket"
}
],
"installments": 12
},
"notification_url": "https://www.your-site.com/ipn",
"statement_descriptor": "MEUNEGOCIO",
"external_reference": "Reference_1234",
"expires": true,
"expiration_date_from": "2016-02-01T12:00:00.000-04:00",
"expiration_date_to": "2016-02-28T12:00:00.000-04:00"
}
Parcelamento sem cartĂŁo
Com o Mercado Pago Ă© possĂvel realizar um parcelamento em atĂ© 12x sem um cartĂŁo de crĂ©dito, essa opção de pagamento se chama Linha de CrĂ©dito.
Ao oferecer esta opção na sua loja, seus clientes poderão comprar um produto hoje e pagar depois em parcelas. Para o seu negócio, a aprovação da compra é imediata e estå garantida, sendo creditado o valor total adiantado e os seus clientes nos pagam depois.
A primeira etapa para configurar pagamentos com Linha de CrĂ©dito Ă© a criação da preferĂȘncia. Para isso, envie um POST com o parĂąmetro purpose
e o valor onboarding_credits
ao endpoint /checkout/preferences e execute a requisição ou, se preferir, utilize um dos nossos SDKs abaixo.
<?php
// 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;
$preference->items = array($item);
$preference->purpose = 'onboarding_credits';
$preference->save();
?>
// Cria um objeto de preferĂȘncia
let preference = {
items: [
{
title: 'Meu produto',
unit_price: 100,
quantity: 1,
}
],
purpose: 'onboarding_credits'
};
mercadopago.preferences.create(preference)
.then(function(response){
// Este valor substituirĂĄ a string "<%= global.id %>" no seu HTML
global.id = response.body.id;
}).catch(function(error){
console.log(error);
});
// Cria um objeto de preferĂȘncia
PreferenceClient client = new PreferenceClient();
// Cria um item na preferĂȘncia
PreferenceItemRequest item =
PreferenceItemRequest.builder()
.title("Meu produto")
.quantity(1)
.unitPrice(new BigDecimal("75"))
.build();
List<PreferenceItemRequest> items = new ArrayList<>();
items.add(item);
PreferenceRequest request =
PreferenceRequest.builder().items(items).purpose("onboarding_credits").build();
client.create(request);
sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN')
# Cria um objeto de preferĂȘncia
preference_data = {
items: [
{
title: 'Meu produto',
unit_price: 100,
quantity: 1
}
],
purpose: 'onboarding_credits'
}
preference_response = sdk.preference.create(preference_data)
preference = preference_response[:response]
# Este valor substituirĂĄ a string "<%= @preference_id %>" no seu HTML
@preference_id = preference['id']
// Cria o objeto de request da preferĂȘncia
var request = new PreferenceRequest
{
Items = new List<PreferenceItemRequest>
{
new PreferenceItemRequest
{
Title = "Meu produto,
Quantity = 1,
CurrencyId = "BRL",
UnitPrice = 75m,
},
},
Purpose = "onboarding_credits",
};
// Cria a preferĂȘncia
var client = new PreferenceClient();
Preference preference = await client.CreateAsync(request);
preference_data = {
"items": [
{
"title": "Meu produto",
"unit_price": 100,
"quantity": 1
}
],
"purpose": "onboarding_credits"
}
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 '{
"items": [
{
"title": "Meu produto",
"quantity": 1,
"unit_price": 75
}
],
"purpose": "onboarding_credits"
}'
Defina os meios de pagamento desejados
Por meio da preferĂȘncia de pagamento, vocĂȘ pode configurar um meio de pagamento padrĂŁo para ser renderizado, excluir algum indesejado, ou ainda escolher um nĂșmero mĂĄximo de parcelas a serem ofertadas.
Atributo de preferĂȘncia | Descrição |
payment_methods | Classe que descreve os atributos e métodos de meios de pagamento do Wallet Brick. |
excluded_payment_types | Método que exclui meios de pagamento indesejados, como cartão de crédito, ticket (boleto), entre outros. |
excluded_payment_methods | MĂ©todo que exclui bandeiras especĂficas de cartĂ”es de crĂ©dito e dĂ©bito, como Visa, Mastercard, American Express, entre outros. |
installments | MĂ©todo que define o nĂșmero mĂĄximo de parcelas a serem ofertadas. |
purpose | Ao indicar o valor wallet_purchase neste método, o Wallet Brick apenas aceitarå pagamentos de usuårios cadastrados no Mercado Pago, com cartão e saldo em conta. |
Por exemplo:
<?php
$preference = new MercadoPago\Preference();
// ...
$preference->payment_methods = array(
"excluded_payment_methods" => array(
array("id" => "master")
),
"excluded_payment_types" => array(
array("id" => "ticket")
),
"installments" => 12
);
// ...
?>
var preference = {}
preference = {
//...
"payment_methods": {
"excluded_payment_methods": [
{
"id": "master"
}
],
"excluded_payment_types": [
{
"id": "ticket"
}
],
"installments": 12
}
//...
}
PreferenceClient client = new PreferenceClient();
//...
List<PreferencePaymentMethodRequest> excludedPaymentMethods = new ArrayList<>();
excludedPaymentMethods.add(PreferencePaymentMethodRequest.builder().id("master").build());
excludedPaymentMethods.add(PreferencePaymentMethodRequest.builder().id("amex").build());
List<PreferencePaymentTypeRequest> excludedPaymentTypes = new ArrayList<>();
excludedPaymentTypes.add(PreferencePaymentTypeRequest.builder().id("ticket").build());
PreferencePaymentMethodsRequest paymentMethods =
PreferencePaymentMethodsRequest.builder()
.excludedPaymentMethods(excludedPaymentMethods)
.excludedPaymentTypes(excludedPaymentTypes)
.installments(12)
.build();
PreferenceRequest request = PreferenceRequest.builder().paymentMethods(paymentMethods).build();
client.create(request);
//...
#...
preference_data = {
# ...
payment_methods: {
excluded_payment_methods: [
{ id: 'master' }
],
excluded_payment_types: [
{ id: 'ticket' }
],
installments: 12
}
# ...
}
#...
var paymentMethods = new PreferencePaymentMethodsRequest
{
ExcludedPaymentMethods = new List<PreferencePaymentMethodRequest>
{
new PreferencePaymentMethodRequest
{
Id = "master",
},
},
ExcludedPaymentTypes = new List<PreferencePaymentTypeRequest>
{
new PreferencePaymentTypeRequest
{
Id = "ticket",
},
},
Installments = 12,
};
var request = new PreferenceRequest
{
// ...
PaymentMethods = paymentMethods,
};
#...
preference_data = {
"excluded_payment_methods": [
{ "id": "master" }
],
"excluded_payment_types": [
{ "id": "ticket" }
],
"installments": 12
}
#...
Aceite pagamentos com 2 cartÔes de crédito
VocĂȘ pode ativar a opção de oferecer pagamentos com dois cartĂ”es de crĂ©dito a partir da conta do Mercado Pago.
Para ativar essa opção de pagamento, acesse "OpcÔes de negócio" e selecione a opção "Receber pagamentos com 2 cartÔes de crédito".
Aceite pagamentos somente de usuĂĄrios cadastrados
VocĂȘ pode aceitar pagamentos com a carteira do Mercado Pago apenas de usuĂĄrios cadastrados, com cartĂŁo, saldo disponĂvel e Linha de CrĂ©dito.
Isto permite que seus clientes tenham suas informaçÔes de conta disponĂveis no ato do pagamento, tais como seus cartĂ”es e endereços salvos.
Para aceitar pagamentos somente de usuĂĄrios cadastrados, adicione o seguinte atributo as suas preferĂȘncias:
json
"purpose": "wallet_purchase"
Ao completar a ação, sua preferĂȘncia teria estrutura similar a do exemplo abaixo:
json
{
"purpose": "wallet_purchase",
"items": [
{
"title": "Meu produto",
"quantity": 1,
"unit_price": 75.76
}
],
}
Altere a data de vencimento de pagamentos em dinheiro
Ă possĂvel alterar a data de vencimento padrĂŁo de pagamentos em dinheiro enviando o campo date_of_expiration
na requisição de criação da preferĂȘncia. A data configurada por vocĂȘ deve ser entre 1 dia e 30 dias a partir da data de emissĂŁo do pagamento.
Por exemplo:
"date_of_expiration": "2020-05-30T23:59:59.000-04:00"
Ative o modo binĂĄrio
VocĂȘ pode ativar o modo binĂĄrio se o modelo de negĂłcios exigir que a aprovação do pagamento seja instantĂąnea. Dessa forma, o pagamento sĂł poderĂĄ ser aprovado ou recusado. Se o modo binĂĄrio estiver desativado, o pagamento poderĂĄ ficar pendente (no caso de exigir qualquer ação do comprador) ou em processo (se for necessĂĄria uma revisĂŁo manual).
Para ativĂĄ-lo, basta definir o atributo binary_mode
da preferĂȘncia de pagamento como true
:
json
"binary_mode": true
Defina a vigĂȘncia das suas preferĂȘncias
Defina um perĂodo de validade para as suas preferĂȘncias de pagamento a partir dos atributos expires
, expiration_date_from
e expiration_date_to
:
json
"expires": true,
"expiration_date_from": "2017-02-01T12:00:00.000-04:00",
"expiration_date_to": "2017-02-28T12:00:00.000-04:00"
Note que a data deve seguir o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz
.
Envie descrição na fatura do cartão comprador
VocĂȘ pode adicionar uma descrição para o seu negĂłcio atravĂ©s do atributo statement_descriptor
das preferĂȘncias de pagamento, como mostra o exemplo abaixo:
json
"statement_descriptor": "MEUNEGOCIO"
Dependendo da bandeira do cartão, a descrição (valor do atributo) aparecerå na fatura do cartão do comprador.
Defina uma preferĂȘncia para diversos itens
Se vocĂȘ precisar criar uma preferĂȘncia para mais de um item, deverĂĄ adicionĂĄ-los como uma lista, como mostra o exemplo abaixo:
<?php
# Criar um objeto preferĂȘncia
$preference = new MercadoPago\Preference();
# Cria itens na preferĂȘncia
$item1 = new MercadoPago\Item
$item1->title = "Item de Teste 1";
$item1->quantity = 2;
$item1->unit_price = 11.96;
$item2= new MercadoPago\Item
$item2->title = "Item de Teste 2";
$item2->quantity = 1;
$item2->unit_price = 11.96;
$preference->items = array($item1,$item2);
# Salvar e postar a preferĂȘncia
$preference->save();
?>
// Configura sua preferĂȘncia
var preference = {
items: [
{ title: 'Meu produto',
quantity: 1,
currency_id: 'BRL',
unit_price: 75.56 },
{ title: 'Meu produto 2â,
quantity: 2,
currency_id: 'BRL',
unit_price: 96.56 }
]
};
// Cria um botĂŁo de pagamento no seu site
mercadopago.preferences.create(preference)
.then(function(preference){
// Este valor substituirĂĄ o string "$init_point$" no seu HTML
global.init_point = preference.body.init_point;
}).catch(function(error){
console.log(error);
});
// Cria um objeto preferĂȘncia
PreferenceClient client = new PreferenceClient();
// Cria itens na preferĂȘncia
PreferenceClient client = new PreferenceClient();
List<PreferenceItemRequest> items = new ArrayList<>();
PreferenceItemRequest item1 =
PreferenceItemRequest.builder()
.id("1234")
.title("Produto 1")
.quantity(2)
.currencyId("BRL")
.unitPrice(new BigDecimal("100"))
.build();
PreferenceItemRequest item2 =
PreferenceItemRequest.builder()
.id("12")
.title("Produto 2")
.quantity(1)
.currencyId("BRL")
.unitPrice(new BigDecimal("100"))
.build();
items.add(item1);
items.add(item2);
PreferenceRequest request = PreferenceRequest.builder().items(items).build();
// Salvar e postar a preferĂȘncia
client.create(request);
sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN')
# Create preference data with items
preference_data = {
items: [
{
title: 'Meu produto 1',
quantity: 1,
currency_id: 'BRL',
unit_price: 75.56
},
{
title: 'Meu produto 2',
quantity: 2,
currency_id: 'BRL',
unit_price: 96.56
}
]
}
preference_response = sdk.preference.create(preference_data)
preference = preference_response[:response]
# Cria itens na preferĂȘncia
preference_data = {
"items": [
{
"title": "Mi producto",
"quantity": 1,
"unit_price": 75.56
},
{
"title": "Mi producto2",
"quantity": 2,
"unit_price": 96.56
}
]
}
# Cria a preferĂȘncia
preference_response = sdk.preference().create(preference_data)
preference = preference_response["response"]
// Cria o request com mĂșltiplos itens
var request = new PreferenceRequest
{
Items = new List<PreferenceItemRequest>
{
new PreferenceItemRequest
{
Title = "Meu produto 1",
Quantity = 1,
CurrencyId = "BRL",
UnitPrice = 75.56m,
},
new PreferenceItemRequest
{
Title = "Meu produto 2",
Quantity = 2,
CurrencyId = "BRL",
UnitPrice = 96.56m,
},
// ...
},
};
// Cria um objeto client
var client = new PreferenceClient();
// Cria a preferĂȘncia
Preference preference = await client.CreateAsync(request);
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 '{
"items": [
{
"id_product":1,
"quantity":1,
"unit_price": 234.33,
"titulo":"Meu produto"
},
{
"id_product":2,
"quantity":2,
"unit_price": 255.33,
"titulo":"Meu produto 2"
}
]
}'
Lembre-se de que o valor total da preferĂȘncia serĂĄ a soma do valor do preço unitĂĄrio de cada item listado.
Mostre o valor do envio
Se vocĂȘ jĂĄ possui o envio estimado pelo seu site, pode definir o valor do mesmo e mostrĂĄ-lo separadamente do valor total no momento do pagamento.
Para configurar tal cenĂĄrio, adicione o item shipments
com o valor que quiser cobrar no atributo cost
e o valor not_specified
no atributo mode
:
json
{
"shipments":{
"cost": 1000,
"mode": "not_specified",
}
}
Redirecione o comprador para o seu site
No final do processo de pagamento, vocĂȘ tem a opção de redirecionar o comprador para o seu site novamente. Para isso, adicione o atributo back_urls
e defina, segundo o status do pagamento, a pĂĄgina desejada para redirecionar o seu comprador quando ele clicar no botĂŁo de retorno ao site.
Se deseja que o redirecionamento para os pagamentos aprovados seja automåtico, sem a renderização de um botão de retorno, é preciso adicionar também o atributo auto_return
com valor approved
.
Atributo | Descrição |
auto_return | Os compradores sĂŁo redirecionados automaticamente para o site quando o pagamento Ă© aprovado. O valor padrĂŁo Ă© approved . |
back_urls | URL de retorno ao site. PossĂveis cenĂĄrios sĂŁo:success : URL de retorno perante pagamento aprovado.pending : URL de retorno perante pagamento pendente.failure : URL de retorno perante pagamento rejeitado. |
Através das back_urls
, serĂŁo retornados os seguintes parĂąmetros:
Parùmetro | Descrição |
payment_id | ID (identificador) do pagamento do Mercado Pago. |
status | Estado do pagamento. Ex.: approved para um pagamento aprovado ou pending para um pagamento pendente. |
external_reference | Valor enviado no momento da criação da preferĂȘncia de pagamento. |
merchant_order_id | ID (identificador) da ordem de pagamento gerada no Mercado Pago. |
Por exemplo:
<?php
$preference = new MercadoPago\Preference();
//...
$preference->back_urls = array(
"success" => "https://www.seu-site/success",
"failure" => "http://www.seu-site/failure",
"pending" => "http://www.seu-site/pending"
);
$preference->auto_return = "approved";
// ...
?>
var preference = {}
preference = {
// ...
"back_urls": {
"success": "https://www.seu-site/success",
"failure": "http://www.seu-site/failure",
"pending": "http://www.seu-site/pending"
},
"auto_return": "approved",
// ...
}
PreferenceBackUrlsRequest backUrls =
// ...
PreferenceBackUrlsRequest.builder()
.success("https://www.seu-site/success")
.pending("https://www.seu-site/pending")
.failure("https://www.seu-site/failure")
.build();
PreferenceRequest request = PreferenceRequest.builder().backUrls(backUrls).build();
// ...
# ...
preference_data = {
# ...
back_urls = {
success: 'https://www.tu-sitio/success',
failure: 'https://www.tu-sitio/failure',
pending: 'https://www.tu-sitio/pendings'
},
auto_return: 'approved'
# ...
}
# ...
var request = new PreferenceRequest
{
// ...
BackUrls = new PreferenceBackUrlsRequest
{
Success = "https://www.tu-sitio/success",
Failure = "http://www.tu-sitio/failure",
Pending = "http://www.tu-sitio/pendings",
},
AutoReturn = "approved",
};
preference_data = {
"back_urls": {
"success": "https://www.tu-sitio/success",
"failure": "https://www.tu-sitio/failure",
"pending": "https://www.tu-sitio/pendings"
},
"auto_return": "approved"
}
A data usa o formato ISO 8601: yyyy-MM-dd'T'HH:mm:ssz