Otras funcionalidades
Puedes adaptar la integración a tu negocio sumando atributos en la preferencia. Hay muchos datos en una preferencia que se pueden configurar, pero siempre ten en cuenta qué es lo que tu negocio necesita.
Si ofreces compras de montos bajos, por ejemplo, puedes excluir medios de pago que no quieras aceptar.
Ejemplo de una preferencia completa
Json
{
"items": [
{
"id": "item-ID-1234",
"title": "Mi producto",
"currency_id": "CLP",
"picture_url": "https://www.mercadopago.com/org-img/MP3/home/logomp3.gif",
"description": "Descripción del Item",
"category_id": "art",
"quantity": 1,
"unit_price": 75.76
}
],
"payer": {
"name": "Juan",
"surname": "Lopez",
"email": "user@email.com",
"phone": {
"area_code": "11",
"number": "4444-4444"
},
"identification": {
"type": "DNI",
"number": "12345678"
},
"address": {
"street_name": "Street",
"street_number": 123,
"zip_code": "5700"
}
},
"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",
"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"
}
Atributos para la preferencia
Definición de medios de pago
Por defecto, se ofrecen todos los medios de pago. Si se quiere excluir alguno puede hacerse desde la preferencia de pago. También se puede definir un medio de pago para que aparezca por defecto o la cantidad de cuotas máximas a ofrecer.
Atributo | Descripción |
---|---|
payment_methods |
Clase que describe los atributos y métodos de medios de pago. |
excluded_payment_methods |
Método que excluye por medio de pago específicos: Visa, Mastercard o American Express, entre otras. |
excluded_payment_types |
Método que excluye por tipo de medio de pago: efectivo, tarjetas de crédito o débito. |
installments |
Método que define la cantidad de cuotas máximas a ofrecer. |
<?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
}
//...
}
Preference preference = new Preference();
//...
PaymentMethods paymentMethods = new PaymentMethods();
paymentMethods.setExcludedPaymentMethods("master", "amex");
paymentMethods.setExcludedPaymentTypes("ticket");
paymentMethods.setInstallments(12);
preference.setPaymentMethods(paymentMethods);
//...
preference = MercadoPago::Preference.new
#...
preference.payment_methods = {
excluded_payment_methods: [id: "master"],
excluded_payment_types: [id: "ticket"],
installments: 12
}
#...
Preference preference = new Preference();
PaymentMethods paymentmethods = new PaymentMethods();
List<PaymentMethod> excludedPaymentMethod = new List<PaymentMethod>();
excludedPaymentMethod.Add(new PaymentMethod()
{
Id = "master"
});
paymentmethods.excludedPaymentType = excludedPaymentMethod;
List<PaymentType> ExcludedPaymentType = new List<PaymentType>();
excludedPaymentType.Add(new PaymentType()
{
Id = "ticket"
});
paymentmethods.ExcludedPaymentTypes = excludedPaymentType;
paymentmethods.Installments = 12;
Modo binario
Puedes activar el modo binario si el modelo de negocio requiere que la aprobación del pago sea instantánea. De esta forma, el pago solo puede resultar aprobado o rechazado.
En caso de no estar activado el modo binario, el pago puede quedar en pendiente (en caso de requerir alguna acción por parte del comprador) o en proceso (si es necesaria una revisión manual).
Para activarlo, solo debes configurar como true
el atributo binary_mode
de la preferencia de pago:
Json
"binary_mode": true
Vigencia de preferencias
Si se quiere habilitar el pago de una preferencia con un tiempo de duración determinado, se puede activar un periodo de vigencia o concluir directamente con los siguientes atributos:
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"
Sponsor ID
El atributo sponsor_id
es un identificador del desarrollador o compañía de software que realiza la integración del Smart Checkout, este dato es visible en la preferencia y en el pago.
Json
"sponsor_id": 123456789
Múltiples ítems
Si se necesita crear una preferencia para más de un ítems, solo debes agregarlos como una lista dentro de items. Ten en cuenta que el monto total de la preferencia será la suma de la cantidad por el precio unitario de cada ítem.
<?php
# Crear un objeto preferencia
$preference = new MercadoPago\Preference();
# Crea ítems en la preferencia
$item1 = new MercadoPago\Item
$item1->title = "Item de Prueba 1";
$item1->quantity = 2;
$item1->unit_price = 11.96;
$item2= new MercadoPago\Item
$item2->title = "Item de Prueba 2";
$item2->quantity = 1;
$item2->unit_price = 11.96;
$preference->items = array($item1,$item2);
# Guardar y postear la preferencia
$preference->save();
?>
// Configura tu preferencia
var preference = {
items: [
{ title: 'Mi producto',
quantity: 1,
currency_id: 'CLP',
unit_price: 75.56 },
{ title: 'Mi producto 2’,
quantity: 2,
currency_id: 'CLP',
unit_price: 96.56 }
]
};
// Crea un botón de pago en tu sitio
mercadopago.preferences.create(preference)
.then(function(preference){
// Este valor reemplazará el string "$$init_point$$" en tu HTML
global.init_point = preference.body.init_point;
}).catch(function(error){
console.log(error);
});
// Crea un objeto preferencia
Preference preference = new Preference();
// Crea ítems en la preferencia
Item item1 = new Item();
item1.setId("1234")
.setTitle("Producto 1")
.setQuantity(2)
.setCurrencyId("CLP")
.setUnitPrice((float) 75.56);
Item item2 = new Item();
item2.setId("12")
.setTitle("Producto 2")
.setQuantity(1)
.setCurrencyId("CLP")
.setUnitPrice((float) 75.56);
preference.appendItem(item1, item2);
// Guardar y postear la preferencia
preference.save();
// Crea ítems en la preferencia
item = MercadoPago::Item.new({
title: "Mi producto",
quantity: 1,
unit_price: 75.56
})
item2 = MercadoPago::Item.new({
title: "Mi producto2”,
quantity: 2,
unit_price: 96.56
})
// Crea un objeto preferencia
preference = MercadoPago::Preference.new({
items: [item, item2]
})
preference.save()
// Crea un objeto preferencia
Preference preference = new Preference();
// Crea ítems en la preferencia
reference.Items.Add(
new Item()
{
Title = "Mi producto",
Quantity = 1,
CurrencyId = CurrencyId.CLP,
UnitPrice = (decimal)75.56
},
new Item()
{
Title = "Mi producto2”,
Quantity = 2,
CurrencyId = CurrencyId.CLP,
UnitPrice = (decimal)96.56
}
);
preference.Save()"
curl -X POST \
'https://api.mercadolibre.com/checkout/preferences?access_token="PROD_ACCESS_TOKEN"' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d '{
"items": [
{
"id_product":1,
"quantity":1,
"unit_price": 234.33,
"titulo":"Mi producto"
},
{
"id_product":2,
"quantity":2,
"unit_price": 255.33,
"titulo":"Mi producto 2"
}
]
}'