Cart


Representa un Carrito de Compras.

El atributo billing representa los datos de facturación. Son opcionales y sólo tienen efecto si se desea una factura personalizada.

El atributo payment_info contiene los datos del pago:

  • is_balance_in_use activa o desactiva el uso de saldo para el pago del pedido.
  • promo_code_id indica el ID del PromoCode a usar.
  • currency_iso representa la moneda del pago para que se haga la conversión de montos y mostrar el pago en la moneda elegida.
  • payment_method_type indica el tipo de método de pago. gateway para las integraciones y form para los pagos manuales.
  • payment_method_id posee el ID del método de pago. Contiene el ID del PaymentMethod en caso de gateway o el ID del Form en casos de payment_method_type=form

El atributo delivery almacena los datos de la entrega. Los atributos latitude_e6 y longitude_e6 contiene las coordenadas de la ubicación de entrega. En caso de órdenes PickUp, se debe configurar ambos valores en 0.

  • address contiene la ubicación descriptiva (en texto).
  • notes contiene las notas adicionales de entrega. Por ejemplo: "Dejar con el vigilante".
  • is_gift indica que el pedido se trata de un regalo. En caso de is_gift=true se debe enviar receiver_name y receiver_phone con el nombre y teléfono de la persona que recibe el pedido.
  • scheduled_at contiene la fecha y hora de programación de la orden en UTC. Si es null, la orden será ASAP.
  • selected_delivery_id contiene la flota elegida para el delivery. En caso de no especificar, el API asignará la flota por defecto para la entrega.

currency_iso Representa la moneda del pedido (refleja la moneda de la Company). No se puede modificar. status indica el estado actual del carrito (En construcción, se usará con las listas de compras). items representa el detalle de productos del carrito. Cada item tiene un atributo is_valid que indica si la configuración del producto es válida (en construcción). Actualmente siempre devuelve true.

El atributo resume contiene los valores calculados del Carrito.

  • is_valid si los datos son válidos. Esto no toma en cuenta la configuración de productos, sino los datos de entrega y pagos.
  • prices muestra el monto total del pedido. En caso que prices contenga un array errors no vacío, indica que los productos en cuestión ya no son válidos para hacer el pedido, y dichos errores deben corregirse.
  • fees contiene el detalle de las tarifas a cobrar.
    • subtotal muestra el total sumado de los productos elegidos.
    • delivery_details contiene el desglose de los montos de envío.
    • selected_delivery_id indica el ID de la flota elegida para el envío.
    • available_delivery_providers contiene una lista de las flotas disponibles para hacer tu envío. El usuario podría elegir entre ellas.
    • service_details contiene el desglose de los montos de los cargos por servicio. Si el label es - se debe mostrar el texto de "Servicio" según el idioma que corresponda.
    • discount_details contiene el desglose de los descuentos aplicados.
    • taxes_details contiene el desglose de los ajustes adicionales aplicados al monto del pedido.
    • total_to_pay representa el total a pagar aplicando todos los elementos indicados arriba.
    • estimated_route contiene información de la ruta estimada para realizar la entrega.
    • payment contiene información a mostrar para el pago. payment.debt contiene la deuda total con el saldo y descuentos ya aplicados. A esto se le suma el payment.payment_tax que indica las comisiones de pago adicionales para el método de pago seleccionado. Por último, el payment.payment_total indica el monto total a pagar con las comisiones de pago ya sumadas. Los atributos con prefijo payment_ muestran la información en la moneda del pago en vez de la moneda de la Company.
    • Si payment_error no es null, indica que no se puede usar el método de pago elegido y se muestra información del motivo.

Modelo Cart

Ver Json

Atributo Tipo Descripción
id int -
client_id int -
branch_id int\|null -
resume CartResume\|null -
delivery DeliveryInfo -
billing BillingInfo\|null -
payment_info PaymentInfo -
currency_iso string -
status string -
created_at datetime\|null -
updated_at datetime\|null -

Listar Cart

{info} Soporta: Paginación Filters Carga dinámica

Listar Carritos

Muestra la lista de carritos para el usuario autenticado.

Método URI Cabeceras
GET /companies/{companyId}/carts Authorization

Mostrar Cart

{info} Soporta: Carga dinámica

Mostrar Carrito

Muestra los detalles de un carrito por su id

Método URI Cabeceras
GET /companies/{companyId}/carts/{cartId} Authorization

Actualizar Cart

Modificar/Actualizar Carrito

Actualiza datos del carrito que no corresponden a los productos solicitados:

  • billing: Datos de facturación.
  • delivery: Dirección de entrega, Receptor y Fecha para el envío.
  • payment_info: Configuración para el pago, moneda y códigos promocionales.

{warning} Al enviar cualquiera de estos objetos, el objeto completo será reemplazado con los nuevos datos. Si se omite algún atributo de estos objetos, dicho atributo será reiniciado a su valor por defecto.

Método URI Cabeceras
PATCH /companies/{companyId}/carts/{cartId} Authorization
{
    "billing": {
        "dni": "nullable|string|max:32",
        "phone": "nullable|string|max:32",
        "name": "nullable|string|max:80",
        "email": "nullable|string|email:rfc,filter",
        "address": "nullable|string|max:512"
    },
    "delivery": {
        "selected_delivery_id": "nullable|integer",
        "scheduled_at": "nullable|date",
        "receiver_name": "nullable|string|max:80",
        "receiver_phone": "nullable|string|max:32",
        "is_gift": "boolean",
        "latitude_e6": "integer|between:-90000000,90000000",
        "longitude_e6": "integer|between:-180000000,180000000",
        "address": "nullable|string|max:512",
        "notes": "nullable|string|max:255",
        "locations": [
            {
                "latitude_e6": "required|integer|between:-90000000,90000000",
                "longitude_e6": "required|integer|between:-180000000,180000000",
                "address": "nullable|string|max:512",
                "notes": "nullable|string|max:255"
            }
        ],
        "is_trip": "boolean"
    },
    "payment_info": {
        "is_balance_in_use": "boolean",
        "promo_code_id": "nullable|integer",
        "currency_iso": "nullable|string|max:8",
        "payment_method_type": "nullable|string|in:gateway,form,post-payment,balance",
        "payment_method_id": "nullable"
    }
}

Eliminar Cart

Eliminar Carrito

Elimina el carrito y descarta todos los cambios realizados.

Método URI Cabeceras
DELETE /companies/{companyId}/carts/{cartId} Authorization

Acciones de Cart

Show Latest

{info} Soporta: Carga dinámica

Mostrar último Carrito

Muestra el carrito donde el usuario haya echo su última interacción.

Este endpoint es útil (por ejemplo) para mostrar el carrito en el Home o cuando no se haya elegido ningún comercio en la interfaz de usuario.

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/carts/latest Authorization

Show For Branch

{info} Soporta: Carga dinámica

Mostrar Carrito de Comercio

Muestra el Carrito del Usuario para un Comercio determinado.

Solo puede existir un único Carrito para un client_id y branch_id al mismo tiempo.

Si no existe Carrito para el client_id y branch_id elegido, se creará un nuevo Carrito vacío automáticamente antes de devolver una respuesta. Si eso ocurre, la única diferencia en la respuesta será que el status_code será de 201 (nuevo carrito creado) en vez de 200 (carrito existente devuelto).

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/branches/{branchId}/carts Authorization

Show For Branch

{info} Soporta: Carga dinámica

Mostrar Carrito de Comercio

Muestra el Carrito del Usuario para un Comercio determinado.

Solo puede existir un único Carrito para un client_id y branch_id al mismo tiempo.

Si no existe Carrito para el client_id y branch_id elegido, se creará un nuevo Carrito vacío automáticamente antes de devolver una respuesta. Si eso ocurre, la única diferencia en la respuesta será que el status_code será de 201 (nuevo carrito creado) en vez de 200 (carrito existente devuelto).

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/branches/{branchId}/carts Authorization

Clear

Vaciar Carrito

Elimina todos los productos agregados al carrito. Los datos de delivery, pagos, etc., no se ven afectados.

Método URI Cabeceras
POST /companies/{companyId}/carts/{cartId}/clear Authorization

Checkout

Recalcular Carrito.

Se validan que los datos del carrito sigan siendo correctos (productos aún con stock, dirección de entrega, etc). Útil cuando ha pasado un tiempo sin realizar cambios en el carrito (atributo updated_at) y se desea comprobar que los datos sigan siendo válidos. Respuesta: Cart

Si se envía submit: true, entonces el carrito será validado y enviado. El carrito es eliminado en el proceso. Respuesta: Order

Método URI Cabeceras
POST /companies/{companyId}/carts/{cartId}/checkout Authorization
{
    "submit": "nullable|boolean"
}

Replace

Reemplazar Carrito desde Orden

Reemplaza todos los productos del carrito con los productos solicitados en una orden, coincidiendo las cantidades de la orden y las variantes elegidas. Útil para repetir una orden. Los demás datos del carrito (como dirección) no se ven afectados.

Esta acción es equivalente a variar el carrito y luego agregar todos los productos desde una orden. Los productos que existan agregados al carrito antes de esta acción serán removidos. Se recomienda solicitar una confirmación antes de reemplazar los productos del carrito si el carrito ya posee algún producto agregado.

Nótese que solo se puede utilizar este endpoint si el branch_id de la Orden y el Carrito coinciden.

Método URI Cabeceras
POST /companies/{companyId}/carts/{cartId}/replace-items-from-order Authorization
{
    "order_id": "required|integer|exists:orders,id"
}

Enlaces de Cart