Aplicar un cupón a la orden

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

13161316

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:

Atributo

Tipo de dato

Descripción

amount

number

El monto total del descuento de la orden.

code

string

El código del descuento que se aplicara en la orden.

reference

string

Referencia del descuento.

description

string

La descripción del descuento.

free_shipping

object

is_free_shipping

boolean

Si el descuento es de envío gratis.

maximum_cost_allowed

number

El monto máximo del descuento.

discount_category

string

Categorí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ámetro

Descripción de cambio

items

Esto se debe porque el cupón puede añadir algún producto dentro de la orden.

items_total_amount

Es la suma de costo de todos los items de la orden este valor corresponde a
order->items-> total_amount-> amount.

discounts

Se 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_amount

Si el cupón es de tipo free_shipping se debe poner este valor en 0.

subtotal

Es el valor de (items_total_amount - tax_amount).

total_amount

Es la suma de shipping_amount + tax_amount - total_discount.

total_discount

El 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",
}

Did this page help you?