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=formEl 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.payment_error no es null, indica que no se puede usar el método de pago elegido y se muestra información
del motivo.| 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 |
- |
{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 |
{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 |
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 Carrito
Elimina el carrito y descarta todos los cambios realizados.
| Método | URI | Cabeceras |
|---|---|---|
| DELETE | /companies/{companyId}/carts/{cartId} |
Authorization |
{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 |
{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 |
{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 |
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 |
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"
}
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"
}