Cómo acceder a las tarifas de múltiples transportistas a través de una sola API (con API de envío gratuito)
Publicado: 2017-02-27
Última actualización - 24 de febrero de 2020
En este artículo, comprenderá cómo acceder a esta API y obtener tarifas nacionales e internacionales para su paquete de diferentes transportistas como FedEx, UPS y USPS. Solo tiene que especificar la dirección del remitente, la dirección del destinatario, el tipo de servicio y los detalles de autorización para el transportista específico como datos JSON cifrados.
Para usar esta API, debe registrarse en http://shippingapi.storepep.com y obtener una clave de API gratuita en su correo electrónico, solo necesita proporcionar su identificación de correo electrónico durante el registro.
GET : Lista de Servicios Disponibles
1: Obtenga todos los servicios de FedEx disponibles:
Comando : curl http://shippingapi.storepep.com/api/shippings/fedex-services
Salida :
{
"FEDEX_1_DAY_FREIGHT":"FEDEX 1 DAY FREIGHT",
"FEDEX_2_DAY":"FEDEX 2 DAY",
"FEDEX_2_DAY_AM":"FEDEX 2 DAY AM",
"FEDEX_2_DAY_FREIGHT":"FEDEX 2 DAY FREIGHT",
"FEDEX_3_DAY_FREIGHT":"FEDEX 3 DAY FREIGHT",
"FEDEX_DISTANCE_DEFERRED":"FEDEX DISTANCE DEFERRED",
"FEDEX_EXPRESS_SAVER":"FEDEX EXPRESS SAVER",
"FEDEX_FIRST_FREIGHT":"FEDEX FIRST FREIGHT",
"FEDEX_FREIGHT_ECONOMY":"FEDEX FREIGHT ECONOMY",
"FEDEX_FREIGHT_PRIORITY":"FEDEX FREIGHT PRIORITY",
"FEDEX_GROUND":"FEDEX GROUND",
"FEDEX_NEXT_DAY_AFTERNOON":"FEDEX NEXT DAY AFTERNOON",
"FEDEX_NEXT_DAY_EARLY_MORNING":"FEDEX NEXT DAY EARLY MORNING",
"FEDEX_NEXT_DAY_END_OF_DAY":"FEDEX NEXT DAY END OF DAY",
"FEDEX_NEXT_DAY_FREIGHT":"FEDEX NEXT DAY FREIGHT",
"FEDEX_NEXT_DAY_MID_MORNING":"FEDEX NEXT DAY MID MORNING",
"FIRST_OVERNIGHT":"FIRST OVERNIGHT",
"GROUND_HOME_DELIVERY":"GROUND HOME DELIVERY",
"EUROPE_FIRST_INTERNATIONAL_PRIORITY":"EUROPE FIRST INTERNATIONAL PRIORITY",
"INTERNATIONAL_ECONOMY":"INTERNATIONAL ECONOMY",
"INTERNATIONAL_ECONOMY_FREIGHT":"INTERNATIONAL ECONOMY FREIGHT",
"INTERNATIONAL_FIRST":"INTERNATIONAL FIRST",
"INTERNATIONAL_PRIORITY":"INTERNATIONAL PRIORITY",
"INTERNATIONAL_PRIORITY_FREIGHT":"INTERNATIONAL PRIORITY FREIGHT",
"PRIORITY_OVERNIGHT":"PRIORITY OVERNIGHT",
"SAME_DAY":"SAME DAY",
"SAME_DAY_CITY":"SAME DAY CITY",
"SMART_POST":"SMART POST",
"STANDARD_OVERNIGHT":"STANDARD OVERNIGHT"
}
2: Obtenga todos los servicios de UPS disponibles:
Comando : curl http://shippingapi.storepep.com/api/shippings/ups-services
Salida :
{
'01': 'UPS Next Day Air',
'02': 'UPS Second Day Air',
'03': 'UPS Ground',
'07': 'UPS Worldwide Express',
'08': 'UPS Worldwide Expedited',
'11': 'UPS Standard',
'12': 'UPS Three-Day Select',
'13': 'UPS Next Day Air Saver',
'14': 'UPS Next Day Air Early AM',
'54': 'UPS Worldwide Express Plus',
'59': 'UPS Second Day Air AM',
'65': 'UPS Saver',
'82': 'UPS Today Standard',
'83': 'UPS Today Dedicated Courier',
'84': 'UPS Today Intercity',
'85': 'UPS Today Express',
'86': 'UPS Today Express Saver',
'92': 'UPS SurePost (USPS) < 1lb', '93': 'UPS SurePost (USPS) > 1lb',
'94': 'UPS SurePost (USPS) BPM',
'95': 'UPS SurePost (USPS) Media'
}
3: Obtenga todos los servicios de USPS disponibles:
Comando : curl http://shippingapi.storepep.com/api/shippings/usps-services
Salida :
{
'First Class>LETTER':'First Class>LETTER',
'First Class>FLAT':'First Class>FLAT',
'First Class>PARCEL':'First Class>PARCEL',
'First Class>POSTCARD':'First Class>POSTCARD',
'First Class>PACKAGE SERVICE':'First Class>PACKAGE SERVICE',
'First Class Commercial>PACKAGE SERVICE':'First Class Commercial>PACKAGE SERVICE',
'First Class HFP Commercial>PACKAGE SERVICE':'First Class HFP Commercial>PACKAGE SERVICE',
'Priority':'Priority',
'Priority Commercial':'Priority Commercial',
'Priority Cpp':'Priority Cpp',
'Priority HFP Commercial':'Priority HFP Commercial',
'Priority HFP Cpp':'Priority HFP Cpp',
'Priority Mail Express':'Priority Mail Express',
'Priority Mail Express Commercial':'Priority Mail Express Commercial',
'Priority Mail Express Cpp':'Priority Mail Express Cpp',
'Priority Mail Express HFP':'Priority Mail Express HFP',
'Priority Mail Express HFP Commercial':'Priority Mail Express HFP Commercial',
'Standard Post':'Standard Post',
'Retail Ground':'Retail Ground',
'Media':'Media',
'Library':'Library',
'Online Plus':'Online Plus',
'12':'Global Express Guaranteed',
'1':'Priority Mail Express International',
'2':'Priority Mail International',
'9':'Priority Mail International Medium Flat Rate Box',
'11':'Priority Mail International Large Flat Rate Box',
'16':'Priority Mail International Small Flat Rate Box',
'15':'First Class Package International Service'
}
POST: API de tarifas
Para usar la API de Tarifas, primero debemos comprender la estructura de esta solicitud de API.
Nombre | Descripción |
---|---|
Common_Params | Contiene elementos internos comunes a todas las compañías navieras. |
Common_Params > entorno | para modo de prueba: sandbox, para modo de producción: en vivo |
Common_Params > emailid | ID de correo electrónico registrado para esta API |
Common_Params > clave | Clave API recibida durante el registro |
Common_Params > host | Opcional (su nombre de host) |
Common_Params > os | Opcional (detalles de su sistema operativo) |
Common_Params >Shipper_PersonName | Nombre del remitente |
Common_Params >Shipper_CompanyName | empresa del remitente |
Common_Params >Remitente_Número de teléfono | Número de teléfono del remitente |
Common_Params >Shipper_Address_StreetLines | Dirección postal del remitente |
Common_Params >Shipper_Address_City | ciudad del remitente |
Common_Params >Shipper_Address_StateOrProvinceCode | Código de estado/provincia del remitente (*no más de dos letras) |
Common_Params >Shipper_Address_PostalCode | Código postal del remitente |
Common_Params >Shipper_Address_CountryCode | Código de país del remitente (*solo código de dos letras) |
Common_Params >Recipient_PersonName | Nombre del destinatario |
Common_Params >Recipient_CompanyName | empresa del destinatario |
Common_Params >Recipient_PhoneNumber | Número de teléfono del destinatario |
Common_Params >Recipient_Address_StreetLines | Dirección postal del destinatario |
Common_Params >Recipient_Address_City | Ciudad del destinatario |
Common_Params >Recipient_Address_StateOrProvinceCode | Código de estado/provincia del destinatario () |
Common_Params >Recipient_Address_PostalCode | Código postal del destinatario |
Common_Params >Recipient_Address_CountryCode | Código de país del destinatario |
Common_Params >Recipient_Address_CountryName | Nombre del país del destinatario |
Common_Params >Recipient_Address_Residential | Verdadero/Falso (es la dirección residencial del destinatario) |
Common_Params >fedex_key | Clave recibida de FedEx |
Common_Params >fedex_contraseña | contraseña de fedex |
Common_Params >fedex_account_number | número de cuenta FedEx |
Common_Params >fedex_meter_number | Número de contador de FedEx |
Common_Params > ups_key | Clave recibida de UPS |
Common_Params >ups_password | contraseña de SAI |
Common_Params >ups_account_number | número de cuenta UPS |
Common_Params >ups_username | Nombre de usuario recibido de UPS |
Common_Params >usps_nombre de usuario | Nombre de usuario de USPS |
Request_Array | Este objeto contiene solicitudes para varias empresas y varios paquetes. |
Request_Array > Matriz de solicitud | Múltiples solicitudes pasadas en una matriz |

Estructura de Solicitud (como en Request_Array )
Nombre | Descripción |
---|---|
Solicitud | Contiene elementos internos comunes a todos los transportistas (compañías navieras) |
Solicitar > identificación | Cualquier ID único para identificar este paquete (ID de este elemento de matriz) |
Solicitar >empresa | Nombre del transportista (p. ej., 'fedex', 'ups', 'usps') para obtener las tarifas de estas empresas para este paquete |
Solicitud >Unidades_de_peso | Unidad de peso (actualmente solo se admite 'LB') |
Solicitud > Tipo de servicio | Código de servicio para el servicio de transportista específico para el cual se requiere la tarifa. Consulte la documentación API de los operadores. |
Solicitud >Tipos de solicitud de tarifa | 'NONE' para tarifas específicas de cuenta y 'LIST' para tarifas minoristas |
Solicitar >paquetes |
Ejemplo de JSON (antes del cifrado) :
{ "Parámetros_comunes": { "entorno": "caja de arena", "emailid": "[email protected]", "clave": "b52ee1f3ab8454589d6a9bd5018d60be", "anfitrión": "www.storepep.com", "os": "Windows NT 6.3 compilación 9600 (Windows 8.1 Hogar) i586", "Shipper_PersonName": "JOE CRISTO", "Shipper_CompanyName": "MI EMPRESA", "Shipper_PhoneNumber": "0123456789", "Shipper_Address_StreetLines": "TABLERO DE SEDA", "Shipper_Address_City": "COLUMBUS", "Shipper_Address_StateOrProvinceCode": "OH", "Shipper_Address_PostalCode": "43218", "Shipper_Address_CountryCode": "EE. UU.", "Recipient_PersonName": "Nombre del destinatario", "Recipient_CompanyName": "XYZ", "Recipient_PhoneNumber": "0123456789", "Recipient_Address_StreetLines": "123, CARRETERA XYZ", "Recipient_Address_City": "", "Recipient_Address_StateOrProvinceCode": "WA", "Recipient_Address_PostalCode": "98503", "Recipient_Address_CountryCode": "EE. UU.", "Recipient_Address_CountryName": "Estados Unidos (EE. UU.)", "Recipient_Address_Residential": "falso", "fedex_key": "UzxdpT3cy7UDF3Vl", "fedex_password": "I1IWFyvBz34QnJOwqZyBn9oll", "fedex_account_number": "110087444", "fedex_meter_number": "128768444", "ups_key": "DCEF2E428E10BBB7", "ups_password": "Q1w2e3r4t5o5", "ups_account_number": "189Y5A", "ups_username": "iahtai21", "usps_nombre de usuario": "806XDDAP3116", "usps_password": "516GD04CJ256" }, "Solicitud_Array": [ { "id": "53:1", "empresa": [ "ups" ], "Unidades_de_peso": "LB", "ServiceType": "Prioridad", "RateRequestTypes": "NINGUNO", "paquetes": [ { "peso": 2, "unidad": "libras", "Descripción": "Mi Paquete", "nº_de_paquetes": 1, "Número de secuencia": 1 } ] }, { "id": "53,37:1", "empresa": [ "fedex" ], "Unidades_de_peso": "LB", "TipoServicio": "FEDEX_GROUND", "RateRequestTypes": "NINGUNO", "paquetes": [ { "peso": 1.5, "unidad": "libras", "Descripción": "Mi Paquete", "nº_de_paquetes": 1, "Número de secuencia": 3 } ] } ] }
Después de generar dicho objeto JSON, debe codificar este objeto con su clave de API única. Proporcionamos el algoritmo de codificación a continuación, para que le resulte fácil continuar.
Función PHP para codificar esta solicitud JSON
<?php función codificar ($ clave, $ datos) { $cifrado = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $clave256 = $clave; $iv = '1156651@adaptadorX'; mcrypt_generic_init($cifrado, $clave256, $iv); $cipherText256 = mcrypt_generic($cifrado,$datos); mcrypt_generic_deinit($cifrar); $cipherHexText256 =bin2hex($cipherText256); devolver $cipherHexText256; } ?>
Luego, coloque este objeto codificado en otro objeto JSON (con dos elementos, 'emailid' y 'data') y envíelo al servidor.
<?php $requerido=matriz(); $req['emailid']='[email protected]'; Su ID de correo electrónico registrado API $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; Su CLAVE registrada API $req['data']=$this->encode($apikey,$JSON_Req); $contenido =json_encode($req); ?>
La solicitud JSON final se ve así:
{"emailid":"[email protected]", "datos":"" }
Envíe este objeto JSON al servidor.
Eche un vistazo al siguiente ejemplo para comprender cómo enviar una solicitud en PHP:
$curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
curl_setopt($curl, CURLOPT_HEADER, falso);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, verdadero);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Tipo de contenido: aplicación/json"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, falso);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, falso);
curl_setopt($curl, CURLOPT_POST, verdadero);
curl_setopt($curl, CURLOPT_POSTFIELDS, $contenido ); // este es el $contenido que creamos en el código anterior
$json_response = curl_exec($curl);
$estado = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curva);
$respuesta = json_decode($json_response, verdadero);
print_r($respuesta);