Aplicar un cupón a la orden
Este endpoint sirve para que el usuario pueda ingresar un cupón a la orden.
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",
}
Updated 10 months ago