Como acessar taxas de várias transportadoras por meio de uma única API (com API de frete grátis)
Publicados: 2017-02-27
Última atualização - 24 de fevereiro de 2020
Neste artigo, você entenderá como acessar essa API e obter tarifas domésticas e internacionais para seu pacote de diferentes transportadoras, como FedEx, UPS e USPS. Você só precisa especificar o endereço do remetente, endereço do destinatário, tipo de serviço e detalhes de autorização para a transportadora específica como dados JSON criptografados.
Para usar esta API, você precisa se registrar em http://shippingapi.storepep.com e obter uma chave de API gratuita em seu e-mail, basta fornecer seu ID de e-mail durante a inscrição.
GET : Lista de Serviços Disponíveis
1: Obtenha todos os FedExServices disponíveis:
Comando : curl http://shippingapi.storepep.com/api/shippings/fedex-services
Saída :
{
"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: Obtenha todos os serviços UPS disponíveis:
Comando : curl http://shippingapi.storepep.com/api/shippings/ups-services
Saída :
{
'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: Obtenha todos os serviços USPS disponíveis:
Comando : curl http://shippingapi.storepep.com/api/shippings/usps-services
Saída :
{
'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 taxas
Para usar a API Rates, primeiro precisamos entender a estrutura dessa solicitação de API
Nome | Descrição |
---|---|
Common_Params | Contém elementos internos comuns a todas as companhias de navegação |
Common_Params >ambiente | para o modo de teste: sandbox, para o modo de produção: ao vivo |
Common_Params > emailid | ID de e-mail registrado para esta API |
Common_Params >chave | Chave de API recebida durante o registro |
Common_Params >host | Opcional (seu nome de host) |
Common_Params >os | Opcional (detalhes do seu sistema operacional) |
Common_Params >Shipper_PersonName | Nome do remetente |
Common_Params >Shipper_CompanyName | empresa do remetente |
Common_Params >Shipper_PhoneNumber | Telefone do remetente |
Common_Params >Shipper_Address_StreetLines | Endereço do remetente |
Common_Params >Shipper_Address_City | cidade do remetente |
Common_Params >Shipper_Address_StateOrProvinceCode | Código do estado/província do remetente (*não mais de duas letras) |
Common_Params >Shipper_Address_PostalCode | Código postal do remetente |
Common_Params >Shipper_Address_CountryCode | Código do país do remetente (*apenas código de duas letras) |
Common_Params >Recipient_PersonName | nome do destinatário |
Common_Params >Recipient_CompanyName | empresa do destinatário |
Common_Params >Recipient_PhoneNumber | Telefone do destinatário |
Common_Params >Recipient_Address_StreetLines | Endereço do destinatário |
Common_Params >Recipient_Address_City | Cidade do destinatário |
Common_Params >Recipient_Address_StateOrProvinceCode | Código do estado/província do destinatário () |
Common_Params >Recipient_Address_PostalCode | Código postal do destinatário |
Common_Params >Recipient_Address_CountryCode | Código do país do destinatário |
Common_Params >Recipient_Address_CountryName | Nome do país do destinatário |
Common_Params >Recipient_Address_Residencial | Verdadeiro/Falso (é o endereço residencial do destinatário) |
Common_Params >fedex_key | Chave recebida da FedEx |
Common_Params >fedex_password | Senha da FedEx |
Common_Params > fedex_account_number | Número da conta FedEx |
Common_Params > fedex_meter_number | Número do medidor FedEx |
Common_Params >ups_key | Chave recebida da UPS |
Common_Params >ups_password | Senha da UPS |
Common_Params >ups_account_number | Número da conta UPS |
Common_Params >ups_username | Nome de usuário recebido da UPS |
Common_Params > usps_username | Nome de usuário USPS |
Request_Array | Este objeto contém solicitações para várias empresas e vários pacotes |
Request_Array > Matriz de solicitação | Várias solicitações passadas em uma matriz |

Estrutura da solicitação (como em Request_Array )
Nome | Descrição |
---|---|
Solicitar | Contém elementos internos comuns a todas as transportadoras (empresas de navegação) |
Solicitar >id | Qualquer ID exclusivo para identificar este pacote (ID deste elemento da matriz) |
Solicitar >empresa | Nome da transportadora (por exemplo: 'fedex', 'ups', 'usps') para obter as taxas dessas empresas para este pacote |
Solicitar > Peso_Unidades | Unidade de peso (atualmente apenas 'LB' é suportado) |
Solicitação >Tipo de Serviço | Código de serviço para o serviço de operadora específico para o qual a tarifa é exigida. Consulte a documentação da API das operadoras. |
Solicitação > Tipos de solicitação de taxa | 'NONE' para tarifas específicas da conta e 'LIST' para tarifas de varejo |
Solicitar >pacotes |
Exemplo de JSON (antes da criptografia) :
{ "Common_Params": { "ambiente": "caixa de areia", "emailid": "[email protected]", "chave": "b52ee1f3ab8454589d6a9bd5018d60be", "host": "www.storepep.com", "os": "Windows NT 6.3 build 9600 (Windows 8.1 Home) i586", "Shipper_PersonName": "JOE CHRIST", "Shipper_CompanyName": "MINHA EMPRESA", "Shipper_PhoneNumber": "0123456789", "Shipper_Address_StreetLines": "SILK BOARD", "Shipper_Address_City": "COLUMBO", "Shipper_Address_StateOrProvinceCode": "OH", "Shipper_Address_PostalCode": "43218", "Shipper_Address_CountryCode": "EUA", "Recipient_PersonName": "Nome do destinatário", "Recipient_CompanyName": "XYZ", "Recipient_PhoneNumber": "0123456789", "Recipient_Address_StreetLines": "123 , ESTRADA XYZ", "Recipient_Address_City": "", "Recipient_Address_StateOrProvinceCode": "WA", "Recipient_Address_PostalCode": "98503", "Recipient_Address_CountryCode": "EUA", "Recipient_Address_CountryName": "Estados Unidos (EUA)", "Recipient_Address_Residencial": "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_username": "806XDDAP3116", "usps_password": "516GD04CJ256" }, "Request_Array": [ { "id": "53:1", "companhia": [ "usp" ], "Weight_Units": "LB", "ServiceType": "Prioridade", "RateRequestTypes": "NENHUM", "pacotes": [ { "peso": 2, "unidade": "LBS", "Descrição": "Meu pacote", "no_of_packages": 1, "Número de Sequência": 1 } ] }, { "id": "53,37:1", "companhia": [ "fedex" ], "Weight_Units": "LB", "ServiceType": "FEDEX_GROUND", "RateRequestTypes": "NENHUM", "pacotes": [ { "peso": 1,5, "unidade": "LBS", "Descrição": "Meu pacote", "no_of_packages": 1, "Número de Sequência": 3 } ] } ] }
Depois de gerar esse objeto JSON, você precisa codificar esse objeto usando sua chave de API exclusiva. Estamos fornecendo o algoritmo de codificação abaixo, para que seja fácil para você prosseguir.
Função PHP para codificar esta solicitação JSON
<?php função codificar($chave,$dados) { $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $chave256 = $chave; $iv = '1156651@Xadapter'; mcrypt_generic_init($cipher, $key256, $iv); $cipherText256 = mcrypt_generic($cipher,$data); mcrypt_generic_deinit($cipher); $cipherHexText256 =bin2hex($cipherText256); return $cipherHexText256; } ?>
Em seguida, coloque esse objeto codificado em outro objeto JSON (com dois elementos, 'emailid' e 'data') e envie-o para o servidor.
<?php $req=matriz(); $req['emailid']='[email protected]'; Seu ID de e-mail registrado da API $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; Sua chave registrada de API $req['data']=$this->encode($apikey,$JSON_Req); $conteúdo =json_encode($req); ?>
A solicitação JSON final se parece com isso:
{"emailid":"[email protected]", "dados":"" }
Envie este objeto JSON para o servidor.
Dê uma olhada no exemplo abaixo para entender como enviar solicitação em PHP:
$curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Tipo de conteúdo: aplicativo/json"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $conteúdo ); // este é o $content que criamos no código acima
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$resposta = json_decode($json_resposta, true);
print_r($resposta);