Remover un cupón a la orden

1. Crear el Endpoint

Crear un API REST de tipo DELETE, este endpoint debe recibir 2 parámetros en su URL, donde el primero será el "order_id" que contendrá el identificador de la orden y "code" será el código del cupón a remover.

DELETE https://your-host.com/removeCoupons/{orderId}/code/{coupon_code} HTTP/1.1
Content-Type: application/json

🚧

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 orderId 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. Editar la orden

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

ParámetroDescripción de cambio
itemsSe debe remover el item de la orden si es que fue añadido por el cupón.
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 remover todo lo que esta dentro del objeto discounts referente a ese cupón.
shipping_amountSi el cupón es de tipo _free_shipping _se debe volver a añadir el valor del método de envío.
subtotalEs el valor de (items_total_amount - tax_amount).
total_amountEs la suma de shipping_amount + tax_amount - total_discount.
total_discountSe debe remover el valor del descuento aplicado en el cupón.

4. Respuesta del Endpoint

Una vez realizado los cálculos respectivos según el cupón removido, se debe devolver la orden actualizada y quitar del atributo discounts el descuento que corresponda al código del cupón.

{
  "order": {
    ...
    "discounts": [],
    ...
  }
}