Carrito
La API de carrito se integra con el backend de e-commerce Medusa para gestionar carritos de compra. Proporciona endpoints BFF que simplifican las operaciones de carrito, encapsulando las llamadas necesarias al Store API de Medusa.
Para el flujo completo de checkout (crear pedido, capturar pago y fulfillment en una sola llamada), consulta la ruta BFF /api/orders/create-and-process en la API de Pedidos.
El modelo de Carrito
El modelo de carrito contiene la informacion sobre los productos seleccionados, totales calculados y la region asociada.
Propiedades
- Name
id- Type
- string
- Description
Identificador unico del carrito.
- Name
region_id- Type
- string
- Description
ID de la region asociada al carrito (determina moneda e impuestos).
- Name
items- Type
- LineItem[]
- Description
Lista de items en el carrito.
- Name
id- Type
- string
- Description
Identificador unico del line item.
- Name
variant_id- Type
- string
- Description
ID de la variante del producto.
- Name
title- Type
- string
- Description
Nombre del producto.
- Name
quantity- Type
- number
- Description
Cantidad de unidades.
- Name
unit_price- Type
- number
- Description
Precio por unidad en centavos.
- Name
total- Type
- number
- Description
Total del item (unit_price x quantity).
- Name
total- Type
- number
- Description
Total del carrito incluyendo envio e impuestos.
- Name
subtotal- Type
- number
- Description
Subtotal antes de envio e impuestos.
- Name
shipping_total- Type
- number
- Description
Costo de envio.
- Name
tax_total- Type
- number
- Description
Total de impuestos.
Ejemplo de carrito
{
"cart": {
"id": "cart_01HQ8ABC123",
"region_id": "reg_argentina",
"items": [
{
"id": "item_01HQ8DEF789",
"variant_id": "variant_01HQ_BD_5G",
"title": "Blue Dream 5g",
"quantity": 2,
"unit_price": 1650000,
"total": 3300000
},
{
"id": "item_01HQ8DEF790",
"variant_id": "variant_01HQ_GG_1G",
"title": "Gorilla Glue 1g",
"quantity": 1,
"unit_price": 350000,
"total": 350000
}
],
"subtotal": 3650000,
"shipping_total": 0,
"tax_total": 0,
"total": 3650000
}
}
Crear carrito
Crea un nuevo carrito asociado a la region configurada para la organizacion. El carrito se crea vacio y luego se le agregan items.
Respuesta
- Name
cart- Type
- Cart
- Description
El carrito recien creado con items vacios y totales en cero.
Request
curl -X POST https://app.cannahub.tech/api/cart \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json"
Response
{
"cart": {
"id": "cart_01HQ8ABC123",
"region_id": "reg_argentina",
"items": [],
"subtotal": 0,
"shipping_total": 0,
"tax_total": 0,
"total": 0
}
}
Obtener carrito
Obtiene un carrito existente por su ID, incluyendo todos los items y totales calculados.
Parametros de ruta
- Name
id- Type
- string
- Description
ID del carrito a obtener.
Request
curl https://app.cannahub.tech/api/cart/cart_01HQ8ABC123 \
-H "Authorization: Bearer {token}"
Response
{
"cart": {
"id": "cart_01HQ8ABC123",
"region_id": "reg_argentina",
"items": [
{
"id": "item_01HQ8DEF789",
"variant_id": "variant_01HQ_BD_5G",
"title": "Blue Dream 5g",
"quantity": 2,
"unit_price": 1650000,
"total": 3300000
}
],
"subtotal": 3300000,
"shipping_total": 0,
"tax_total": 0,
"total": 3300000
}
}
Agregar item al carrito
Agrega un item al carrito especificando la variante del producto y la cantidad deseada.
Parametros de ruta
- Name
id- Type
- string
- Description
ID del carrito.
Request Body
- Name
variantId- Type
- string
- Description
ID de la variante del producto a agregar.
- Name
quantity- Type
- number
- Description
Cantidad de unidades a agregar. Por defecto: 1.
Request
curl -X POST https://app.cannahub.tech/api/cart/cart_01HQ8ABC123/items \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"variantId": "variant_01HQ_BD_5G",
"quantity": 2
}'
Response
{
"cart": {
"id": "cart_01HQ8ABC123",
"region_id": "reg_argentina",
"items": [
{
"id": "item_01HQ8DEF789",
"variant_id": "variant_01HQ_BD_5G",
"title": "Blue Dream 5g",
"quantity": 2,
"unit_price": 1650000,
"total": 3300000
}
],
"subtotal": 3300000,
"shipping_total": 0,
"tax_total": 0,
"total": 3300000
}
}
Eliminar item del carrito
Elimina un item especifico del carrito. Los totales se recalculan automaticamente.
Parametros de ruta
- Name
id- Type
- string
- Description
ID del carrito.
- Name
itemId- Type
- string
- Description
ID del line item a eliminar.
Request
curl -X DELETE https://app.cannahub.tech/api/cart/cart_01HQ8ABC123/items/item_01HQ8DEF789 \
-H "Authorization: Bearer {token}"
Response
{
"cart": {
"id": "cart_01HQ8ABC123",
"region_id": "reg_argentina",
"items": [],
"subtotal": 0,
"shipping_total": 0,
"tax_total": 0,
"total": 0
}
}