#
Estafeta
#
1. Cotizar envío
POST /api/shipping/price
Devuelve un array con los servicios disponibles.
REQUEST
#
provider_data
provider Estafeta. Campo obligatorio.
API_KEY: (Tipo de dato: string). Api key provista por Estafeta. Campo obligatorio.
API_SECRET: (Tipo de dato: string). Api secret provista por Estafeta. Campo obligatorio.
#
shippment_data
idusuario: (Tipo de dato: integer). Id del usuario con el que se realizará la consulta a la base de datos, Proporcionado por Estafeta. Campo obligatorio.
usuario: (Tipo de dato: string). Usuario con el que se realizará la consulta a la base de datos. Proporcionado por Estafeta. Campo obligatorio.
contra: (Tipo de dato: string). Contraseña con la que que se realizará la consulta a la base de datos. Proporcionado por Estafeta. Campo obligatorio.
esFrecuencia: (Tipo de dato: boolean). Indica si los resultados de salida son solo frecuencia o frecuencia y cotización. esFrecuencia=true, devolverá solo frecuencia de servicios. esfrecuencia=false, devolverá frecuencia y cotización. Campo obligatorio. Campo obligatorio.
esLista: (Tipo de dato: boolean). Indica si el parámetro de códigos postales origen y destino son un rango o una lista. esLista=true, indica que el parámetro de códigos postales de origen o destino puede ser uno o varios. EsLista= false, indica que el parámetro de códigos postales origen y destino al menos uno de ellos es un rango. Campo obligatorio.
tipoEnvio.Alto: (Tipo de dato: integer). Alto en cm. Campo obligatorio.
tipoEnvio.Ancho: (Tipo de dato: integer). Ancho en cm. Campo obligatorio.
tipoEnvio.Largo: (Tipo de dato: integer). Largo en cm. Campo obligatorio.
tipoEnvio.Peso: (Tipo de dato: float). Peso en kg. Campo obligatorio.
datosOrigen.string: (Tipo de dato: string). Código postal de origen. Campo obligatorio.
datosDestino.string: (Tipo de dato: string). Código postal de destino. Campo obligatorio.
{
"provider_data":{
"provider": "Estafeta",
"API_KEY": "l714b88f56f47a49498a78f741ac8e1411",
"API_SECRET": "597da01f468742488ee823a6e5091bb7"
},
"shippment_data": {
"datosOrigen": {
"string": "03940"
},
"datosDestino":{
"string": "03940"
},
"idusuario": "",
"usuario": "",
"contra": "",
"esFrecuencia": false,
"esLista": false,
"tipoEnvio":{
"Alto": 10,
"Ancho": 10,
"Largo": 10,
"Peso": 10.0
}
}
}
RESPONSE
- CostoReexpedicion: Costo del envío.
- ModalidadEntrega: Devuelve la modalidad de entrega.
- DiasEntrega: Devuelve los días de entrega.
{
response: "Success",
providerStatus: "Creado",
CostoReexpedicion: "",
ModalidadEntrega: "",
DiasEntrega: ""
}
#
2. Generar envío / etiqueta
POST /api/shipping/create
Permite crear un envío y devuelve también la etiqueta asignada en formato base 64.
REQUEST
#
provider_data
provider: Estafeta. Campo obligatorio.
API_KEY: (Tipo de dato: string). Api key provista por Estafeta. Campo obligatorio.
API_SECRET: (Tipo de dato: string). Api secret provista por Estafeta. Campo obligatorio.
#
shippment_data
identification.suscriberId: (Tipo de dato: string). Identificador único de Grupo Cliente Proporcionado por Estafeta. Campo obligatorio.
identification.customerNumber: (Tipo de dato: string). Número de cliente con el cual Estafeta identifica sus clientes. Campo obligatorio.
systemInformation.id: (Tipo de dato: string). Identificador del aplicativo que consume EL.
systemInformation.name:(Tipo de dato: string). Nombre del aplicativo que consume EL. Campo obligatorio.
destinatario.telefonos: (Tipo de dato: string). Campo obligatorio.
bultos.kilos: (Tipo de dato: float). Peso del envío con dos decimales (Ejemplo: 10.50) Campo obligatorio.
bultos.altoCm: (Tipo de dato: integer). Valor máximo: 190 cms. Campo obligatorio.
bultos.largoCm: (Tipo de dato: integer). Valor máximo: 240 cms. Campo obligatorio.
bultos.anchoCm: (Tipo de dato: integer). Valor máximo: 120 cms. Campo obligatorio.
bultos.cantidad: (Tipo de dato: float). Cantidad de los bienes o mercancías que se trasladan en los distintos medios de transporte. Campo opcional.
serviceConfiguration.quantityOfLabels: (Tipo de dato: integer). Cantidad de etiquetas a crear o imprimir. Campo obligatorio.
serviceConfiguration.serviceTypeId: (Tipo de dato: string). Identificador del servicio Estafeta. Dicho servicio deberá tener rangos de folios asignados al No. de Cliente.
serviceConfiguration.salesOrganization: (Tipo de dato: string). Identificador de la oficina Estafeta a la cual pertenece la cuenta cliente. Campo obligatorio.
origen.postal.codigoPostal: (Tipo de dato: string). Campo obligatorio.
remitente.nombreCompleto: (Tipo de dato: string). Razón social de la empresa. Campo obligatorio.
remitente.telefonos:(Tipo de dato: string). Campo obligatorio.
remitente.celular:(Tipo de dato: string). Campo opcional.
remitente.email: (Tipo de dato: string). Campo opcional.
origen.postal.calle: (Tipo de dato: string). Campo obligatorio.
origen.postal.numero: (Tipo de dato: string). Campo obligatorio.
origen.postal.localidad: (Tipo de dato: string). Campo obligatorio.
origen.postal.region: (Tipo de dato: string). Campo obligatorio.
origen.postal.codigoPostal: (Tipo de dato: string). Campo obligatorio.
origen.postal.pais: (Tipo de dato: string). Código del país. Para México es "MX". Campo obligatorio.
PickUp: (Tipo de dato: boolean). Indica si la entrega será en un PUDO. Campo obligatorio.
codigoPickUp: (tipo de dato: string). Indica el PUDO donde se hace la entrega, es obligatorio cuando isDeliveryPUDO es TRUE.
destinatario.nombreCompleto: (Tipo de dato: string). Campo obligatorio.
destinatario.email: (Tipo de dato: string). Campo opcional.
destinatario.telefonos: (Tipo de dato: string). Campo obligatorio.
destinatario.celular: (Tipo de dato: string). Campo opcional.
destino.postal.calle: (Tipo de dato: string). Campo obligatorio.
destino.postal.localidad: (Tipo de dato: string). Campo obligatorio.
destino.postal.region: (Tipo de dato: string). Campo obligatorio.
destino.postal.codigoPostal: (Tipo de dato: string). Campo obligatorio.
destino.postal.pais: (Tipo de dato: string). Código del país. Para México es "MX". Campo obligatorio.
destino.postal.numero: (Tipo de dato: string). Campo obligatorio.
currency: (Tipo de dato: string). Código de la moneda utilizada(Si en en méxico enviar "MXN"). Campo obligatorio.
NOTA: si el envío es con Carta Porte se deben agregar los siguientes campos al request.
documento_envio: (Tipo de dato: string). Identificador de que se envía la información de Carta Porte. En caso afirmativo colocar "carta_porte", sino ""(string vacío). Campo obligatorio si se envía Carta Porte.
items: (Tipo de dato: string). Array de productos enviados. Campo obligatorio.
item.cantidad: (Tipo de dato: integer). Cantidad de ese item. Campo obligatorio.
item.codigo: (Tipo de dato: string). Clave de producto. (Ver: http://pys.sat.gob.mx/PyS/catPyS.aspx). Campo obligatorio.
item.tipo_producto: (Tipo de dato: integer). Clave de unidad de medida aplicable a la cantidad de bienes o mercancías. (Ver: http://pys.sat.gob.mx/PyS/catUnidades.aspx). Campo obligatorio
item.valorDeclaradoConImpuestos: (Tipo de dato: double). Precio del producto hasta con dos decimales separados por un punto. Campo obligatorio.
item.descripcion: (Tipo de dato: integer). Título o descripción del producto. Campo obligatorio.
{"provider_data":
{
"provider": "Estafeta",
"API_KEY": "l7f3023288161d4b57ad0679b0adffe1e2",
"API_SECRET": "ec5371f3703b42c688ddff9fb7c2a0e3"
},
"shippment_data": {
"identification": {
"suscriberId": "01",
"customerNumber": "0000000"
},
"systemInformation": {
"id": "AP01",
"name": "AP01",
"version": "1.10.20"
},
"serviceConfiguration": {
"quantityOfLabels": 1,
"serviceTypeId": "70",
"salesOrganization": "112",
"originZipCodeForRouting": "1407",
"isReturnDocument": "false",
"returnDocument": {
"type": "DRID",
"serviceId": "60"
}
},
"origen": {
"postal": {
"codigoPostal": "62250",
"calle": "Domingo Diez",
"numero": "120",
"piso": "1",
"depto": "C",
"localidad": "El Empleado",
"region": "Monterrey",
"pais": "MEX",
"entreCalle": ""
}
},
"tipoServicio": "",
"remito": "",
"documento_envio": "carta_porte"
"id_externo": "",
"destino": {
"sucursal": {
"id": ""
},
"postal": {
"codigoPostal": "03940",
"calle": "AV INSURGENTES SUR",
"numero": "1602",
"piso": "1",
"depto": "C",
"localidad": "Benito Juárez",
"colonia": "Crédito Constructor",
"region": "CDMX",
"pais": "MEX",
"entreCalle": "Entre estas calles"
}
},
"remitente": {
"nombreCompleto": "Alberto Lopez",
"email": "remitente@andreani.com",
"documentoTipo": "",
"documentoNumero": "",
"telefonos": "1512345678",
"celular": "123456789012"
},
"destinatario": {
"nombreCompleto": "Juana Gonzalez",
"email": "destinatario@andreani.com",
"documentoTipo": "",
"documentoNumero": "",
"telefonos": "1512345678",
"celular": "123456789012"
},
"productoAEntregar": "Aire Acondicionado",
"PickUp": false,
"codigoPickUp": "567",
"bultos": {
"kilos": 2,
"largoCm": 1,
"altoCm": 5,
"anchoCm": 1,
"volumenCm": "",
"cantidad": 2.5,
"valorDeclaradoSinImpuestos": "",
"valorDeclaradoConImpuestos": "",
"detalle": "",
"idCliente": ""
},
"items": [{
"cantidad": 2,
"codigo": "31181701",
"tipo_producto": "H87",
"kilos": "",
"largoCm": "",
"altoCm": "",
"anchoCm":" ",
"volumenCm": "",
"valorContraReembolso": "",
"valorDeclaradoConImpuestos": 400.00,
"sku": "",
"descripcion": "Bermuda"
},
{
"cantidad": 2,
"codigo": "31181701",
"tipo_producto": "H87",
"kilos": "",
"largoCm": "",
"altoCm": "",
"anchoCm":" ",
"volumenCm": "",
"valorContraReembolso": "",
"valorDeclaradoConImpuestos": 500.00,
"sku": "",
"descripcion": "Camisa"
}]
}
}
RESPONSE
- wayBill: Número del envío.
- etiqueta: Etiqueta en formato Base 64.
{
"response": "Success",
"providerStatus": "Creado",
"numeroDeEnvio": {
"wayBill": "1100000000112700193862",
"trackingCode": "1322174421"
},
"numeroDeWaybill": "1100000000112700193862",
"hash": null,
"sucursalDeDistribucion": {
"id": "",
"descripcion": ""
},
"sucursalDeRendicion": null,
"sucursalDeImposicion": null,
"numeroDePermisionaria": null,
"descripcionServicio": {"carta_porte_status": "success"},
"etiqueta": "JVBERi0xLjQKJeLjz9MKMyAw..."
}
#
3. Tracking
GET /api/shipping/:id
Este método devuelve el estado del envío.
REQUEST
- id: Número de envío. Va en el id de la url como ruta parametrizada. Campo obligatorio.
Este campo van en el header:
provider: Jipink. Campo obligatorio.
apiKey: (Tipo de dato: string). Api key provista por Estafeta. Campo obligatorio.
apiSecret: (Tipo de dato: string). Api secret provista por Estafeta. Campo obligatorio.
type: Indica si el envío se rastreará por waybill o tracking number. Valores posibles: 0 (para bsucar por número de guía), 1 (para buscar por tracking number). Campo obligatorio.
provider: Estafeta
apiKey: l7b5b451b26ce9447886d6f5b3c280cff7
apiSecret: 7e62be3e4c2f40419d412537629f58e2
type: 1
RESPONSE
providerStatus: Estado del envío.
numeroDeEnvio: Número del envío.
{
"response": "Success",
"providerStatus": "Entregado en sucursal Estafeta",
"numeroDeEnvio": "3487694811",
"sucursalDeDistribucion": {
"id": null,
"descripcion": null
},
"sucursalDeRendicion": null,
"sucursalDeImposicion": null,
"numeroDePermisionaria": null,
"descripcionServicio": ""
}
#
4. Pickup
POST /api/pickup/create_pickup
Para hacer uso de esta funcionalidad se debe primero generar un envío con "PickUp" en valor true.
REQUEST
#
provider_data
provider Estafeta. Campo obligatorio.
API_KEY: (Tipo de dato: string). Api key provista por Estafeta. Campo obligatorio.
API_SECRET: (Tipo de dato: string). Api secret provista por Estafeta. Campo obligatorio.
#
shippment_data
AccountNumber: (Tipo de dato: string). Número de cliente. Debe ser un número de cliente válido ya registrado en Mi Estafeta. Campo obligatorio.
RequesterName: (Tipo de dato: string). Persona que solicita la recolección. Campo obligatorio.
RequesterEmail: (Tipo de dato: string). Campo obligatorio.
PickupType: (Tipo de dato: string). Tipo de Recolección (MP, LTL). Campo obligatorio.
PickupDate: (Tipo de dato: string). Fecha de la recolección, formato YYYY--MM-DD. Campo obligatorio.
PickupAddress.ShortName: (Tipo de dato: string). Nombre corto de la dirección de recolección. Campo obligatorio.
PickupAddress.Country: (Tipo de dato: string). País de la recolección. Va siempre "México". Campo obligatorio.
PickupAddress.PostalCode: (Tipo de dato: string). Código postal. Campo obligatorio.
PickupAddress.State: (Tipo de dato: string). Estado o entidad federativa. Campo obligatorio.
PickupAddress.City: (Tipo de dato: string). Ciudad o municipio. Campo obligatorio.
PickupAddress.Neighborhood: (Tipo de dato: string). Colonia del domicilio de la recolección. Campo obligatorio.
PickupAddress.Address1: (Tipo de dato: string). Calle. Campo obligatorio.
PickupAddress.ExternalNumber: (Tipo de dato: string). Número de direción. Campo obligatorio.
PickupPackageList[0].Quantity: (Tipo de dato: integer). Cantidad de ítems. Campo obligatorio.
PickupPackageList[0].Waybills[0].WaybillNumber
PickupPackageList[0].Waybills[0].State: (Tipo de dato: string). País de la recolección. Va siempre "México". Campo obligatorio.
PickupPackageList[0].Waybills[0].City: (Tipo de dato: string). Ciudad. Campo obligatorio.
PickupPackageList[0].Waybills[0].Municipality (Tipo de dato: string). Municipio. Campo obligatorio.
PickupPackageList[0].Waybills[0].Neighborhood: (Tipo de dato: string). Colonia. Campo obligatorio.
PickupPackageList[0].Waybills[0].Address1: (Tipo de dato: string). Calle y Número de direción. Campo obligatorio.
PickupAlert_Primary.Name: (Tipo de dato: string). Nombre de contacto. Campo obligatorio.
PickupAlert_Primary.EmailAddress (Tipo de dato: string). Email de contacto. Campo obligatorio.
{"provider_data":
{
"provider": "Estafeta",
"API_KEY": "l7da1b70f4a5224782b1b1b070232ea5ff",
"API_SECRET": "9e976e2db5804daa9c8548d50bada5b4"
},
"pickup_data":
{
"AccountNumber": "8541467",
"RequesterName": "Enrique",
"RequesterEmail": "correoEjemploRequested@estafeta.com",
"PickupType": "MP",
"PickupDate": "2022-09-17",
"PickupAddress": {
"ShortName": "Av De Los Montes Urales",
"Country": "Mexico",
"PostalCode": "62250",
"State": "MORELOS",
"City": "JALA",
"Neighborhood": "SAN FRANCISCO",
"Address1": "La Venta",
"ExternalNumber": "29"
},
"PickupPackageList": [
{
"PackageType": "PKG",
"Length": 1,
"Width": 2,
"Height": 3,
"Weight": 4,
"Quantity": "1",
"Waybills": [
{
"WaybillNumber": "6050000000112700126330",
"DestinationAddress":{
"Country": "Mexico",
"PostalCode": "03940",
"State": "CDMX",
"City": "CDMX",
"Municipality": "CDMX",
"Neighborhood": "CDMX",
"Address1": "AV INSURGENTES SUR1602"
}
}
]
}],
"PickupAlert_Primary": {
"Name": "jorge",
"EmailAddress": "emailExampleDos@estafeta.com",
"PhoneNumber": "string"
}
}
}
RESPONSE
- PickupNumber: Número con el que se registró el pedido de recolección.
{
"response": "Success",
"providerStatus": "Creado",
"numeroDeEnvio": {
"Success": true,
"PickupNumber": "1000628905",
"ScheduleDate": "2023-06-29",
"NumberOfItems": 1,
"ErrorList": []
},
"hash": null,
"sucursalDeDistribucion": {
"id": {
"Success": true,
"PickupNumber": "1000628905",
"ScheduleDate": "2023-06-29",
"NumberOfItems": 1,
"ErrorList": []
},
"descripcion": ""
}
}
#
5. Obtener sucursales
GET /api/subsidiary
El método permite obtener los distintos tipos de centro de atención al cliente de Estafeta (incluyendo sucursales) para un determinado código postal.
REQUEST
Los datos van en el header.
provider Estafeta. Campo obligatorio.
apiKey: (Tipo de dato: string). Api key provista por Estafeta. Campo obligatorio.
apiSecret: (Tipo de dato: string). Api secret provista por Estafeta. Campo obligatorio.
codigoPostal: (Tipo de dato: string). Campo obligatorio.
distancia: (Tipo de dato: string).Distancia en Kilometros desde el punto de búsqueda hacia la ubicación. Campo obligatorio.
tipoSucursal: (Tipo de dato: string).Tipo de centro de atención. Campo obligatorio. Los valores posibles son:
- PDV: Sucursal Estafeta
- PDVC: Concesionario Estafeta
- ASOCTDA: Tienda de conveniencia
- ASOCPDC: Punto de Contacto
provider: Estafeta
apiKey: ""
apiSecret: ""
codigoPostal: 02300
distancia: 10
RESPONSE
ActivityType: Tipo de actividad del centro de atención. Valores a tener en cuenta:
- OCURR - Entrega a Ocurre: Entrega del envío al cliente final.
- RECO - Recolecciones: Cliente puede depositar un envio en sucursal (Proceso de devolución).
LocationTypeCode: tipo de centro. Ver "tipoSucursal" en REQUEST.
{
"Result": {
"Success": true
},
"LocationList": [
{
"LocationCode": "1303",
"EquivalentCode": "525",
"Shortname": "Sucursal Camarones",
"OwnerCode": "EME",
"OwnerName": "Estafeta Mexicana",
"LocationTypeCode": "PDV",
"TypeLocationName": "Sucursal Estafeta",
"SpaceOwnerName": "Estafeta Mexicana",
"Address": "C Norte 79-A 286 , Col Sector Naval, Azcapotzalco, Ciudad De Mexico, 02080",
"RoadTypeCode": "C",
"RoadTypeAbbName": "C",
"RoadName": "Norte 79-A",
"BetweenRoadName1": "Calz. Camarones",
"BetweenRoadName2": "Salónica",
"ExternalNumber": "286",
"SettlementTypeAbbName": "Col",
"SettlementName": "Sector Naval",
"CountryName": "MEX",
"TownshipName": "Azcapotzalco",
"AddressReference": "Fte. a la gasolineria",
"Latitude": "19.469923",
"Longitude": "-99.177457",
"Schedule": {
"MFWorkSchedule": "10:00 - 19:00",
"SatWorkSchedule": "10:00 - 14:00"
},
"Telephone": "8003782338",
"IsParking": true,
"IsHandicapHandling": false,
"IsCOD": true,
"DistanceFromSearchPoint": "1.96880676141989",
"IsActive": true,
"AddressDetail": {
"Address1": "C Norte 79-A 286",
"Neighborhood": "Col Sector Naval",
"City": "Azcapotzalco",
"State": "Ciudad De Mexico",
"ZipCode": "02080"
},
"ActivityType": [
{
"Code": "OCURR",
"Name": "Entrega a Ocurre"
},
{
"Code": "RECO",
"Name": "Recolecciones"
},
{
"Code": "VSERV",
"Name": "Venta de Servicios"
}
],
"OperationSchedule": [
{
"Weekday": "Domingo"
},
{
"Weekday": "Lunes",
"StartHourDay": "10:00",
"FinishHourDay": "19:00",
"StartHourLunchDay": "00:00",
"FinishHourLunchDay": "00:00"
},
{
"Weekday": "Martes",
"StartHourDay": "10:00",
"FinishHourDay": "19:00",
"StartHourLunchDay": "00:00",
"FinishHourLunchDay": "00:00"
},
{
"Weekday": "Miércoles",
"StartHourDay": "10:00",
"FinishHourDay": "19:00",
"StartHourLunchDay": "00:00",
"FinishHourLunchDay": "00:00"
},
{
"Weekday": "Jueves",
"StartHourDay": "10:00",
"FinishHourDay": "19:00",
"StartHourLunchDay": "00:00",
"FinishHourLunchDay": "00:00"
},
{
"Weekday": "Viernes",
"StartHourDay": "10:00",
"FinishHourDay": "19:00",
"StartHourLunchDay": "00:00",
"FinishHourLunchDay": "00:00"
},
{
"Weekday": "Sábado",
"StartHourDay": "10:00",
"FinishHourDay": "14:00",
"StartHourLunchDay": "00:00",
"FinishHourLunchDay": "00:00"
}
]
}
]
}