Saltar al contenido principal

Gestión de Ventas

La API de E3 Stores permite consultar, actualizar y gestionar ventas del sistema de eCommerce. Incluye funcionalidades para consultar ventas por múltiples filtros, ID específico o referencia externa.

Características principales

  • Consulta por múltiples filtros: Estado, rango de fechas, métodos de pago, sitios, usuarios
  • Búsqueda avanzada: Por email, teléfono, código postal, nombre completo
  • Búsqueda por referencia externa: Integración con sistemas ERP
  • Información completa: Datos del cliente, productos, pagos, envíos
  • Estados personalizables: Sistema flexible de estados de venta
  • Paginación: Control de límites y offset para grandes volúmenes

Autenticación

Todos los endpoints requieren autenticación previa mediante el endpoint Auth:

curl -X GET \
"https://demo.e3stores.cloud/Api/Auth/?username=TestApi&password=TestApi1357" \
-H "Content-Type: application/json"

Respuesta exitosa:

{
"status": "0",
"message": "Success",
"data": "5de3928b-6018-4b0c-9ebd-bc2c3e18f708"
}

El valor data es el hash que debe usarse en todas las consultas posteriores.

Endpoints disponibles

Endpoints de consulta (GET)

EndpointDescripciónParámetros principales
GET /Api/Sale/Consulta ventas con múltiples filtroshash, status, from, to, external_reference, email, etc.
GET /Api/Sale/{id}Obtiene venta específica por IDid, hash

Endpoints de actualización (PUT)

EndpointDescripciónParámetros principales
PUT /Api/Sale/{id}Actualiza venta específicaid, hash + payload JSON

Consulta de ventas con filtros múltiples

URL y método

GET /Api/Sale/

Parámetros disponibles

ParámetroTipoRequeridoDescripciónEjemplo
hashstringToken de autenticación5de3928b-6018-4b0c-9ebd-bc2c3e18f708
statusCollection of integerNoEstados de la venta (múltiples valores)1,3,6
fromdateNoFecha de inicio (formato YYYY-MM-DD)2024-12-01
todateNoFecha de fin (formato YYYY-MM-DD)2025-02-01
external_referencestringNoReferencia en sistema externoERP-2024-001
subStatusintegerNoSub-estado de la venta1
payMethodIdintegerNoID del método de pago31
siteIdintegerNoID del sitio1
limitintegerNoNúmero máximo de resultados50
offsetintegerNoNúmero de registros a omitir (paginación)0
emailstringNoEmail del clientejuan@email.com
identification_numberstringNoNúmero de documento del cliente12345678
last_digits_phonestringNoÚltimos dígitos del teléfono6789
postal_codeintegerNoCódigo postal1043
full_namestringNoNombre completo del clienteJuan Pérez

Sistema de estados

Los estados utilizan números enteros con la siguiente lógica:

  • Números positivos: Operaciones realizadas (distintos grados de aceptación)
  • Número 0: Operación pendiente
  • Números negativos: Operaciones rechazadas
EstadoDescripción
0Pendiente
1Confirmada
2En proceso
3Completada
6Entregada
-1Rechazada
-2Cancelada

Ejemplos de peticiones

Consulta básica por estado y fecha:

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?status=3&from=2024-12-01&to=2025-02-01&hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Consulta con múltiples estados:

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?status=1,3,6&siteId=1&hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Consulta por email del cliente:

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?email=juan@email.com&hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Consulta por referencia externa:

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?external_reference=ERP-2024-001&siteId=1&hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Consulta con paginación:

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?status=3&limit=25&offset=50&hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Búsqueda por datos del cliente:

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?identification_number=12345678&postal_code=1043&hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Consulta de venta por ID específico

URL y método

GET /Api/Sale/{id}?hash={hash}

Parámetros requeridos

ParámetroTipoRequeridoDescripciónEjemplo
idintegerID de la venta11474
hashstringToken de autenticación5de3928b-6018-4b0c-9ebd-bc2c3e18f708

Ejemplo de petición

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/11474?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json"

Actualización de venta

URL y método

PUT /Api/Sale/{id}?hash={hash}

Parámetros requeridos

ParámetroTipoRequeridoDescripciónEjemplo
idintegerID de la venta a actualizar11474
hashstringToken de autenticación5de3928b-6018-4b0c-9ebd-bc2c3e18f708

Cuerpo de la petición (Body)

El cuerpo debe contener un objeto JSON con la estructura completa de la venta. Todos los campos son opcionales, pero se recomienda enviar la estructura completa:

{
"Id": 11474,
"Status": 3,
"StatusText": "Completada",
"OperationStatus": 1,
"TrackingCode": "ARG1234567890",
"Obeservations": "Venta procesada correctamente",
"Message": "Entrega confirmada por el cliente"
}

Ejemplo de petición de actualización

curl -X PUT \
"https://demo.e3stores.cloud/Api/Sale/11474?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708" \
-H "Content-Type: application/json" \
-d '{
"Id": 11474,
"Status": 6,
"StatusText": "Entregada",
"TrackingCode": "ARG1234567890",
"Obeservations": "Entregado el 15/01/2025 - Firmado por Juan Pérez"
}'

Estructura de respuesta de ventas

Respuesta completa de ejemplo

{
"Id": 12345,
"InternalCode": "0001234567",
"PayMethodId": 31,
"PayMethod": {
"Id": 31,
"Name": "12 Cuotas sin Interés - Banco Ejemplo",
"Description": "Tarjetas de Crédito Banco Ejemplo",
"SiteControlName": "SPSV2",
"ConfigControlName": "PMSPSV2.ascx",
"Enable": true,
"Selected": false
},
"Total": 25999.00,
"Status": 3,
"StatusText": "Completada",
"OperationStatus": 0,
"OperationStatusText": null,
"UserId": 1001,
"UserData": {
"Id": 1001,
"FirstName": "Juan Carlos",
"LastName": "Pérez",
"EMail": "juan.perez@email.com",
"Access": false,
"Address": "Av. Corrientes",
"State": "1",
"City": "100",
"Country": "1",
"Town": "1050",
"PostalCode": "1043",
"Phone": "1143216789",
"IdNumber": "12345678",
"StreetNumber": "1234",
"AddressLine1": "Piso 5, Depto A",
"Birthday": "1985-03-15T00:00:00"
},
"BillingAddress": {
"Type": 1,
"Default": false,
"Name": "Juan Carlos Pérez",
"Street": "Av. Corrientes",
"Country": "1",
"State": "1",
"City": "100",
"Town": "1050",
"PostalCode": "1043",
"Phone": "1143216789",
"StreetNumber": "1234",
"AddressLine1": "Piso 5, Depto A",
"AddressLine2": "Entre San Martín y Maipú",
"CountryName": "Argentina",
"StateName": "Buenos Aires",
"CityName": "Buenos Aires",
"TownName": "Microcentro",
"IdNumber": "12345678",
"Email": "juan.perez@email.com"
},
"ShippingAddress": {
"Type": 0,
"Default": false,
"Name": "Juan Carlos Pérez",
"Street": "Av. Corrientes",
"Country": "1",
"State": "1",
"City": "100",
"Town": "1050",
"PostalCode": "1043",
"Phone": "1143216789",
"StreetNumber": "1234",
"AddressLine1": "Piso 5, Depto A",
"AddressLine2": "Entre San Martín y Maipú",
"CountryName": "Argentina",
"StateName": "Buenos Aires",
"CityName": "Buenos Aires",
"TownName": "Microcentro",
"IdNumber": "12345678",
"Email": "juan.perez@email.com"
},
"CreationDate": "01/15/2025 14:30:25",
"ModificationDate": "01/15/2025 14:45:10",
"SiteId": 1,
"ShippingCost": 2500.00,
"ShippingId": 10,
"GatewayResponseCode": "001234",
"Currency": {
"Id": 1,
"Name": "Pesos",
"Code": "ARS",
"DisplayName": "$",
"Value": 1.000000,
"IsDefault": true,
"SiteId": 1
},
"Items": [
{
"Id": 98765,
"ItemId": 5001,
"Code": "PROD-001",
"Price": 23499.00,
"Quantity": 1,
"Name": "Smartphone Samsung Galaxy A54 128GB Negro",
"IsItem": true,
"SaleItemType": 0
},
{
"Id": 98766,
"ItemId": 0,
"Code": "SHIP-001",
"Price": 2500.00,
"Quantity": 1,
"Name": "Envío Express",
"IsItem": false,
"SaleItemType": 1
}
],
"ShippingMethod": {
"Id": 10,
"Name": "Envío Express",
"Code": "SHIP-001",
"Display": "CABA/GBA entrega en 24-48 horas hábiles"
},
"TrackingCode": "ARG1234567890",
"Payments": 12
}

Referencia completa de campos

Campos principales de la venta

CampoTipoDescripción
IdintID único de la venta
InternalCodestringCódigo interno de la venta
PayMethodIdintID del método de pago
PayMethodPayMethodObjeto completo del método de pago
TotaldecimalTotal de la venta
StatusintEstado de la venta
StatusTextstringDescripción del estado
OperationStatusintEstado de la operación
OperationStatusTextstringDescripción del estado de operación
UserIdintID del usuario
UserDataUserObjeto completo de datos del usuario
BillingAddressAddressDirección de facturación
ShippingAddressAddressDirección de envío
CreationDatedatetimeFecha de creación
ModificationDatedatetimeFecha de modificación
ObeservationsstringObservaciones
MessagestringMensaje
SiteIdintID del sitio
ShippingCostdecimalCosto de envío
LatstringLatitud (geolocalización)
LngstringLongitud (geolocalización)
ShippingIdintID del método de envío
GatewayResponseCodestringCódigo de respuesta del gateway
GatewayResponseMessagestringMensaje de respuesta del gateway
RetryAttemptintNúmero de intentos de reintento
IpFromstringIP de origen de la venta
PaymentsintNúmero de cuotas
GatewayOrderNumberstringNúmero de orden del gateway
OtherCostdecimalOtros costos
CurrencyIdintID de la moneda
CurrencyCurrencyObjeto completo de la moneda
VendorIdintID del vendedor
TaxesdecimalImpuestos
DiscountdecimalDescuento
InvoiceNumberstringNúmero de factura
TrackingCodestringCódigo de seguimiento
CardNamestringNombre en la tarjeta
DeliveryDatedateFecha de entrega
MarketingEventDatedateFecha de evento de marketing
MarketingPurchaseEventDatedateFecha de evento de compra marketing
MarketingCrossellEventDatedateFecha de evento de cross-sell
ItemsCollection of SaleItemColección de items de la venta
CompanystringEmpresa
IVAstringIVA
NombreFantasiastringNombre de fantasía
SitioWebstringSitio web
TruckstringCamión
GatewayMessagestringMensaje del gateway
SetNewStatusstringEstablecer nuevo estado
SetNewOperationStatusstringEstablecer nuevo estado de operación
PreferencesCollection of PreferencePreferencias
ShippingMethodShippingCostBaseMétodo de envío
ExternalDatedateFecha externa
BoxWidthdecimalAncho de la caja
BoxLengthdecimalLargo de la caja
BoxHeightdecimalAlto de la caja
BoxWeightdecimalPeso de la caja
VolumedecimalVolumen
BoxLengthUnitsLengthUnitsUnidades de longitud
BoxWeightUnitsWeightUnitsUnidades de peso
SubStatusintSub-estado
ExternalReferencestringReferencia externa
SearchFirstLastNamestringBúsqueda por nombre y apellido
SearchEmailstringBúsqueda por email
SearchPhonestringBúsqueda por teléfono
SearchPostalCodestringBúsqueda por código postal
TotalPaidAmountdecimalMonto total pagado
TaxPaymentsdecimalPagos de impuestos
ProvidersCollection of ProviderProveedores
UtmstringUTM
UtmParametersDictionaryParámetros UTM

Campos de UserData

CampoTipoDescripción
IdintID del usuario
UsernamestringNombre de usuario
FirstNamestringNombre
LastNamestringApellido
EMailstringEmail
AccessboolAcceso habilitado
AddressstringDirección
StatestringProvincia/Estado
CitystringCiudad
CountrystringPaís
TownstringLocalidad
PostalCodestringCódigo postal
PhonestringTeléfono
MobilestringCelular
IdNumberstringNúmero de documento
StreetNumberstringNúmero de calle
AddressLine1stringLínea adicional 1
AddressLine2stringLínea adicional 2
BirthdaydatetimeFecha de nacimiento

Campos de dirección (BillingAddress/ShippingAddress)

CampoTipoDescripción
TypeintTipo de dirección (0=Envío, 1=Facturación)
DefaultboolDirección por defecto
NamestringNombre completo
StreetstringCalle
CountrystringPaís
StatestringEstado/Provincia
CitystringCiudad
TownstringLocalidad
PostalCodestringCódigo postal
PhonestringTeléfono
StreetNumberstringNúmero de calle
AddressLine1stringLínea adicional 1
AddressLine2stringLínea adicional 2
CountryNamestringNombre del país
StateNamestringNombre del estado
CityNamestringNombre de la ciudad
TownNamestringNombre de la localidad
CountryCodestringCódigo del país
StateCodestringCódigo del estado
CityCodestringCódigo de la ciudad
TownCodestringCódigo de la localidad
IdNumberstringNúmero de documento
EmailstringEmail

Campos de Items

CampoTipoDescripción
IdintID del item en la venta
ItemIdintID del producto
CodestringCódigo del producto
PriceCodestringCódigo de precio
PriceIdintID del precio
PricedecimalPrecio unitario
QuantityintCantidad
SaleIdintID de la venta
CurrencyIdintID de la moneda
IsItemboolEs producto (true) o servicio (false)
NamestringNombre del producto
ReferenceIdintID de referencia
SaleItemTypeintTipo de item (0=Producto, 1=Servicio)
CurrencyCurrencyObjeto de moneda
IsComboboolEs combo
ProviderIdintID del proveedor
PreferencesDictionaryPreferencias del item

Manejo de errores

Códigos de error comunes

CódigoDescripción
400Parámetros inválidos
401Token (hash) inválido o expirado
404Venta no encontrada
500Error interno del servidor

Casos de uso comunes

1. Consulta de ventas del día

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?from=2025-01-15&to=2025-01-15&hash=YOUR_HASH" \
-H "Content-Type: application/json"

2. Ventas pendientes de un sitio específico

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?status=0&siteId=1&hash=YOUR_HASH" \
-H "Content-Type: application/json"

3. Búsqueda por método de pago

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?payMethodId=31&from=2025-01-01&hash=YOUR_HASH" \
-H "Content-Type: application/json"

4. Paginación para reportes

curl -X GET \
"https://demo.e3stores.cloud/Api/Sale/?status=3,6&limit=100&offset=0&hash=YOUR_HASH" \
-H "Content-Type: application/json"

5. Actualización de estado y tracking

curl -X PUT \
"https://demo.e3stores.cloud/Api/Sale/12345?hash=YOUR_HASH" \
-H "Content-Type: application/json" \
-d '{
"Id": 12345,
"Status": 6,
"StatusText": "Entregada",
"TrackingCode": "ARG1234567890",
"Obeservations": "Entregado exitosamente"
}'

Consideraciones importantes

Estados de venta

  • Los estados son altamente personalizables según las necesidades del cliente
  • Números positivos para ventas en proceso o completadas
  • Números negativos para ventas rechazadas o canceladas
  • El estado 0 se reserva para ventas pendientes

Fechas y horarios

  • Todas las fechas están en formato ISO
  • Los parámetros de fecha deben enviarse en formato YYYY-MM-DD
  • Las fechas de respuesta incluyen horario completo

Referencia externa

  • Útil para integración con sistemas ERP
  • Permite búsqueda rápida de ventas sincronizadas
  • Debe ser única por sitio

Autenticación y seguridad

  • El hash de autenticación puede tener expiración configurable
  • Se recomienda implementar renovación automática del token
  • Usar credenciales de prueba: TestApi / TestApi1357

Paginación y rendimiento

  • Usar limit y offset para manejar grandes volúmenes de datos
  • Valores recomendados: limit=50-100 para consultas normales
  • Monitorear el rendimiento en consultas de rangos de fechas amplios
  • Usar filtros específicos para optimizar las consultas

Búsquedas por datos del cliente

  • Los parámetros de búsqueda permiten encontrar ventas por información del cliente
  • identification_number: Busca por número de documento exacto
  • last_digits_phone: Busca por los últimos dígitos del teléfono
  • full_name: Búsqueda por nombre completo (puede ser parcial)
  • email: Búsqueda por email exacto