Aplicar un cupón a la orden

Este endpoint sirve para que el usuario pueda ingresar un cupón a la orden.

1316

1. Crear el Endpoint

Crear un API REST de tipo POST, este endpoint debe poder recibir tanto el body como un parámetro en su URL, donde el "order_id" será el Identificador de la orden.

POST https://your-host.com/applyCoupons/{orderId} HTTP/1.1
Content-Type: application/json

Los datos que recibirá en el body del endpoint applyCupon siempre tendrá la siguiente estructura:

{
  "coupon_code":"CUP01"
}

🚧

NOTA:

Antes que avancemos tenemos que recordarte que al momento de tokenizar una orden en tu servidor debes guardar en tu base de datos tanto el token como el order_id para luego ser usado.

2. Obtener la orden tokenizada

Obtener el token de la orden previamente almacenado en tu base de datos mediante el order_id que es enviado como parámetro en la URL de tu Merchant API, con el token se debe realizar una petición al servidor para obtener la orden tokenizada.

3. Obtener el cupón

Dentro del body obtenido del endpoint se encuentra el respectivo código del cupón ingresado por el usuario, con el cual tendrás que verificar la existencia y validación del mismo, y dependiendo de la oferta o el descuento será aplicado a la orden con sus respectivos valores modificados.

4. Respuesta del Endpoint

La estructura de los cupones que se deben retornar es la siguiente:

{
    amount: -10000,
    code: "CUP01",
    reference: "Descuento al total de la orden",
    description: "Descuento al total de la orden",
    free_shipping: {
      is_free_shipping: false,
      maximum_cost_allowed: -10000,
    },
    discount_category: "Descuentos",
  },

Estos atributos tienen distintos tipos de datos que para más detalle se podrá observar en la siguiente tabla:

AtributoTipo de datoDescripción
amountnumberEl monto total del descuento de la orden.
codestringEl código del descuento que se aplicara en la orden.
referencestringReferencia del descuento.
descriptionstringLa descripción del descuento.
free_shippingobject
is_free_shippingbooleanSi el descuento es de envío gratis.
maximum_cost_allowednumberEl monto máximo del descuento.
discount_categorystringCategoría del descuento.

Cuando se aplica un cupón se debe verificar cuál es el tipo de ese cupón y dependiendo de ello hacer el cambio en el atributo que corresponda dentro de la orden.

ParámetroDescripción de cambio
itemsEsto se debe porque el cupón puede añadir algún producto dentro de la orden.
items_total_amountEs la suma de costo de todos los items de la orden este valor corresponde a
order->items-> total_amount-> amount.
discountsSe debe agregar la referencia al descuento generado por el cupón en el se verán reflejados el monto del descuento, código, referencia, descripción, free_shipping, categoría, tipo de publico, y tipo de despuesto.
shipping_amountSi el cupón es de tipo free_shipping se debe poner este valor en 0.
subtotalEs el valor de (items_total_amount - tax_amount).
total_amountEs la suma de shipping_amount + tax_amount - total_discount.
total_discountEl monto total del descuento aplicado a la orden.

5. Respuesta válida

Una vez realizado los cálculos respectivos según él cupón ingresado se debe devolver la orden actualizada y el token.

{
  "order": {
    ...
  "discounts": [
    {
      "amount": -250,
      "code": "CUP01",
      "reference": "Descuento al total de la orden",
      "description": "Descuento al total de la orden",
      "free_shipping": {
        "is_free_shipping": false,
        "maximum_cost_allowed": -250
      },
      "discount_category": "Descuentos"
    }
  ],
 },
  "token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
}