Saltar al contenido principal

Creación del checkout

Petición

La creación del checkout se realizará mediante una petición POST al servidor de Aplazame.

tip

Esta página describe como crear un checkout para los productos que tenemos disponibles. Esto dependerá también de la configuración que tenga tu comercio en nuestro backend. Si no se indica tipo de producto en la request (primer caso descrito), se creará el que te corresponda según esa configuración.

Si estás iniciando la integración, te puede interesar consultar cómo establecer el modo de pruebas y también los datos de prueba disponibles para la integración. También disponemos de varios SDK para facilitar la creación del checkout:

precaución

Recuerda visitar primeros pasos para obtener tu api_private_key.

La petición POST debe enviar los siguientes campos y cabeceras:

POST https://api.aplazame.com/checkout
Accept: application/vnd.aplazame.v4+json
Authorization: Bearer api_private_key
Content-Type: application/json
{
"merchant": {...},
"order": {...},
"customer": {...},
"billing": {...},
"shipping": {...}
}
ParámetroTipoRequeridoDescripción
merchantobjectDatos del merchant.
orderobjectDatos del pedido.
customerobjectDatos del cliente.
billingobjectNoDirección de facturación.
shippingobjectInformación de envío.

Forzar modalidad de pago

Si no se especifica un campo product, el tipo de checkout por defecto será híbrido y se mostrarán todas las modalidades de pago disponibles. En caso de especificarse, se mostrará únicamente dicha modalidad sin dar opción al resto.

{
...
"product": {
"type": "pay_in_4"
}
}
ParámetroTipoRequeridoDescripción
productobjectNoPuede ser instalments (pago a plazos), pay_in_4 (pago en 4) o pay_later (pago en 15 días).

merchant

Campos relacionados con las redirecciones web, confirmación del pedido a través de la notification_url y tiempos de expiración.

{
"merchant": {
"notification_url": "https://merchant.com/order/confirm",
"success_url": "/success",
"pending_url": "/pending",
"error_url": "/error",
"dismiss_url": "/",
"ko_url": "/ko",
"close_on_success": false,
"timeout_checkout": 60,
"timeout_extra": 2880
},
// ...
}
ParámetroTipoRequeridoDescripción
notification_urlurlURL a la que se notificará los cambios de estado del pedido y que servirá para completar la confirmación final.
success_urlurlURL (relativa a la tienda) a la que se redirigirá al usuario cuando se haya completado el pago.
pending_urlurlURL (relativa a la tienda) a la que se redirigirá al usuario cuando el pago quede pendiente de confirmación.
error_urlurlURL (relativa a la tienda) a la que se redirigirá al usuario cuando haya ocurrido un error.
dismiss_urlurlNoURL (relativa a la tienda) a la que se redirigirá al usuario cuando éste escoge volver a la tienda (por defecto '/').
ko_urlurlNoURL (relativa a la tienda) a la que se redirigirá al usuario cuando se haya denegado el pago.
close_on_successbooleanNoIndica si el checkout se redirige automáticamente a success_url en caso de éxito (por omisión: false).
timeout_checkoutintegerNoEstablece el tiempo máximo, en minutos, del que dispone el usuario para completar el proceso de checkout. (por omisión 60; mín. 1; máx. 120).
timeout_extraintegerNoEstablece el tiempo adicional, en minutos, del que dispone el usuario para completar la validación de identidad una vez finalizado el proceso de checkout. (por omisión 2880; mín. 0; máx. 2880).

order

Campos relacionados con el pedido, como su importe total y los artículos.

precaución
  • Aplazame no permite diferentes pedidos con el mismo id.
  • El campo total_amount debe ser igual a la suma total del precio de sus artículos y envío incluyendo impuestos y descuentos (ver apartado Importe total del pedido).
{
"id": "28475648233786783165",
"articles": [
{
"id": "89793238462643383279",
"name": "Reloj en oro blanco de 18 quilates y diamantes",
"quantity": 2,
"price": 402000,
"tax_rate": 2100,
"discount": 2000,
"description": "Movimiento de cuarzo de alta precisión",
"url": "http://www.chanel.com/fragrance-beauty/Fragrance-N05-88145/sku/138083",
"image_url": "http://www.chanel.com/fragrance-beauty/Fragrance-N05-88145/sku/138083/product_01.jpg"
},
...
],
"discount": 16000,
"currency": "EUR",
"total_amount": 462000,
"tax_rate": 2100,
"options": {...},
}
ParámetroTipoRequeridoDescripción
idstringID del pedido.
discountdecimalNoImporte de descuento en el precio del pedido.
discount_ratedecimalNoTasa de descuento en el precio del pedido.
cart_discountdecimalNoImporte de descuento en el precio del carrito.
cart_discount_ratedecimalNoTasa de descuento en el precio del carrito.
currencyISO 4217Código de la moneda del pedido.
total_amountdecimalCantidad a financiar.
tax_ratedecimalTasa de impuesto en el precio del pedido.
optionsobjectNoPermite definir opciones concretas de esta order, por ejemplo, la fecha del primer pago.
articlescollectionArtículos en el carrito.

tax_rate

Cada artículo del pedido debe tener tax_rate. Alternativamente puedes incluirlo globalmente en order.tax_rate o puedes aplicarlo a cada artículo y envío.

precaución

El tax_rate en cada artículo o envío sobreescribe el valor global si existe.

options

{
"event_date": "2021-06-15"
}
ParámetroTipoRequeridoDescripción
event_dateISO 8601NoPermite definir la fecha en la que se va a disfrutar del producto comprado, por ejemplo: fecha de un viaje o comienzo de un curso.

article

{
"id": "89793238462643383279",
"name": "Reloj en oro blanco de 18 quilates y diamantes",
"quantity": 2,
"price": 402000,
"tax_rate": 2100,
"discount": 2000,
"description": "Movimiento de cuarzo de alta precisión",
"url": "http://www.chanel.com/fragrance-beauty/Fragrance-N05-88145/sku/138083",
"image_url": "http://www.chanel.com/fragrance-beauty/Fragrance-N05-88145/sku/138083/product_01.jpg",
"category": "Joyería"
}
ParámetroTipoRequeridoDescripción
idstringID.
namestringNombre.
descriptionstringNoDescripción.
urlURLURL absoluta del artículo.
image_urlURLURL absoluta de la imagen del artículo.
quantityintegerCantidad.
pricedecimalPrecio (sin impuestos).
tax_ratedecimalNoTasa de impuestos en el precio.
discountdecimalNoImporte de descuento en el precio.
discount_ratedecimalNoTasa de descuento en el precio.
categorystringNoCategoría del artículo.

customer

Campos realacionados con los datos del cliente.

{
"id": "1618",
"email": "customer@address.com",
"document": { "number": "12345678X" }
"type": "e",
"gender": 0,
"first_name": "John",
"last_name": "Coltrane",
"birthday": "1980-01-01",
"phone": "601234567",
"language": "es",
"date_joined": "2014-08-21T13:56:45+0000",
"last_login": "2020-08-27T19:57:56+0000",
"address": {
"phone": "601234567",
"street": "Plaza del Valle Boreal nº10",
"address_addition": "Cerca de la plaza Pontífice Sulyvahn",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postcode": "28080"
}
}
ParámetroTipoRequeridoDescripción
idstringNoID del cliente.
emailstringCorreo del cliente.
documentobjectNoIndica el documento de identidad del cliente.
addressobjectNoDirección.
typecharNoTipo de cliente; las opciones son g invitado, n nuevo, e existente.
genderintegerNoGénero; las opciones son 0 desconocido, 1 hombre, 2 mujer, 3 no aplica.
first_namestringNoNombre.
last_namestringNoApellidos.
phonestringNoNúmero de teléfono del cliente.
birthdayISO 8601NoFecha de nacimiento.
languageISO 639-1NoPreferencias de idioma.
date_joinedISO 8601NoFecha que designa cuando se creó la cuenta.
last_loginISO 8601NoFecha del último inicio de sesión.

document

{
"number": "12345678X"
}
ParámetroTipoRequeridoDescripción
numberstringNúmero de DNI o NIE.

address

{
"phone": "601234567",
"street": "Plaza del Valle Boreal nº10",
"address_addition": "Cerca de la plaza Pontífice Sulyvahn",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postcode": "28080"
}
ParámetroTipoRequeridoDescripción
phonestringNoNúmero de teléfono de la dirección.
alt_phonestringNoNúmero de teléfono alternativo.
streetstringDirección.
address_additionstringNoLínea adicional.
citystringMunicipio / ciudad.
statestringEstado / provincia.
countryISO 3166-1Código de país.
postcodestringCódigo postal.

billing

Campos relacionados con los datos de facturación del pedido.

{
"first_name": "Bill",
"last_name": "Evans",
"phone": "601765432",
"street": "Calle Central Yharnam 92",
"address_addition": "Cerca del Gran Puente",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postcode": "28080"
}
ParámetroTipoRequeridoDescripción
first_namestringNombre.
last_namestringApellido.
phonestringNoNúmero de teléfono de la dirección.
alt_phonestringNoNúmero de teléfono alternativo.
streetstringDirección.
address_additionstringNoLínea adicional.
citystringMunicipio / ciudad.
statestringEstado / provincia.
countryISO 3166-1Código de país.
postcodestringCódigo postal.

shipping

Campos relacionados con el envío del pedido.

{
"first_name": "Django",
"last_name": "Reinhard",
"phone": "601234567",
"street": "Plaza del Valle Boreal nº10",
"address_addition": "Cerca de la plaza Pontífice Sulyvahn",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postcode": "28080",
"price": 500,
"tax_rate": 2100,
"name": "Planet Express",
"discount": 100,
"method": "postal"
}
ParámetroTipoRequeridoDescripción
first_namestringNombre.
last_namestringApellido.
phonestringNoNúmero de teléfono de la dirección.
alt_phonestringNoNúmero de teléfono alternativo.
streetstringDirección.
address_additionstringNoLínea adicional.
citystringMunicipio / ciudad.
statestringEstado / provincia.
countryISO 3166-1Código de país.
postcodestringCódigo postal.
namestringNombre del envío.
pricedecimalPrecio del envío (impuestos no incluidos).
tax_ratedecimalNoTasa de impuestos en el precio del envío.
discountdecimalNoCantidad de descuento en el precio del envío.
discount_ratedecimalNoTasa de descuento en el precio del envío.
methodstringNoMétodo de envío; las opciones son pickup_store recogida en tienda, pickup_point punto de recogida, postal envio por correo.

Importe total del pedido

Es importante que el importe total del pedido (indicado por total_amount en la lista order) sea el sumatorio de lo siguente:

  • El precio de todos los artículos (precio sin impuestos price + porcentaje de impuestos tax_rate - descuentos discount) de la lista articles.
  • El precio del envío (precio sin impuestos price + porcentaje de impuestos tax_rate - descuentos discount) de la lista shipping.
info

Alternativamente también se puede incluir un sólo campo discount en la lista order (fuera de articles) que sume todos los descuentos.