Jak uzyskać dostęp do stawek wielu przewoźników za pośrednictwem jednego interfejsu API (z interfejsem API bezpłatnej wysyłki)
Opublikowany: 2017-02-27
Ostatnia aktualizacja - 24 lutego 2020 r.
W tym artykule dowiesz się, jak uzyskać dostęp do tego interfejsu API i uzyskać krajowe i międzynarodowe stawki za przesyłkę od różnych przewoźników, takich jak FedEx, UPS i USPS. Musisz tylko podać adres nadawcy, adres odbiorcy, rodzaj usługi i szczegóły autoryzacji dla konkretnego przewoźnika jako zaszyfrowane dane JSON.
Aby korzystać z tego API, musisz zarejestrować się na http://shippingapi.storepep.com i otrzymać darmowy klucz API w wiadomości e-mail, wystarczy podać swój identyfikator e-mail podczas rejestracji.
POBIERZ: Lista dostępnych usług
1: Uzyskaj wszystkie dostępne usługi FedEx:
Polecenie : curl http://shippingapi.storepep.com/api/shippings/fedex-services
Wyjście :
{
"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: Uzyskaj wszystkie dostępne usługi UPS:
Polecenie : curl http://shippingapi.storepep.com/api/shippings/ups-services
Wyjście :
{
'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: Uzyskaj wszystkie dostępne usługi USPS:
Polecenie : curl http://shippingapi.storepep.com/api/shippings/usps-services
Wyjście :
{
'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: Stawki API
Aby użyć Rates API, najpierw musimy zrozumieć strukturę tego żądania API
Nazwa | Opis |
---|---|
Common_Params | Zawiera elementy wewnętrzne wspólne dla wszystkich firm żeglugowych |
Common_Params >środowisko | dla trybu testowego: piaskownica, dla trybu produkcyjnego: na żywo |
Common_Params >adres e-mail | Identyfikator e-mail zarejestrowany dla tego interfejsu API |
Common_Params > klucz | Klucz API otrzymany podczas rejestracji |
Common_Params >host | Opcjonalnie (nazwa hosta) |
Common_Params > os | Opcjonalnie (szczegóły Twojego systemu operacyjnego) |
Common_Params >Nazwa_osoby_nadawcy | Nazwisko nadawcy |
Common_Params >Nazwa_firmy_nadawcy | Firma nadawcy |
Common_Params >Numer_telefonu nadawcy | Numer telefonu nadawcy |
Common_Params >Shipper_Address_StreetLines | Ulica nadawcy |
Common_Params >Adres_nadawcy_Miasto | Miasto nadawcy |
Common_Params >Shipper_Address_StateOrProvinceCode | Kod stanu/prowincji nadawcy (*nie więcej niż dwuliterowy) |
Common_Params >Adres_nadawcy_Kod pocztowy | Kod pocztowy nadawcy |
Common_Params >Shipper_Address_CountryCode | Kod kraju nadawcy (*tylko dwuliterowy kod) |
Common_Params >Recipient_PersonName | Nazwisko odbiorcy |
Common_Params >Odbiorca_NazwaFirmy | Firma odbiorcy |
Common_Params >Recipient_PhoneNumer | Numer telefonu odbiorcy |
Common_Params >Recipient_Address_StreetLines | Ulica odbiorcy |
Common_Params >Adres_odbiorcy_Miasto | Miasto odbiorcy |
Common_Params >Recipient_Address_StateOrProvinceCode | Kod stanu/prowincji odbiorcy () |
Common_Params >Adres_odbiorcy_Kod pocztowy | Kod pocztowy odbiorcy |
Common_Params >Recipient_Address_CountryCode | Kod kraju odbiorcy |
Common_Params > Adres_odbiorcy_Nazwa kraju | Nazwa kraju odbiorcy |
Common_Params >Recipient_Address_Recipient | Prawda/Fałsz (to adres zamieszkania odbiorcy) |
Common_Params >fedex_key | Klucz otrzymany od FedEx |
Common_Params >fedex_password | Hasło FedEx |
Common_Params >numer_konta_fedex | Numer konta FedEx |
Common_Params >fedex_meter_number | Numer licznika FedEx |
Common_Params >ups_key | Klucz otrzymany z UPS |
Common_Params >ups_password | Hasło do UPS |
Common_Params >numer_konta_ups | Numer konta UPS |
Common_Params >ups_username | Nazwa użytkownika otrzymana od UPS |
Common_Params >usps_username | Nazwa użytkownika USPS |
Request_Array | Ten obiekt zawiera żądania dla wielu firm i wielu pakietów |
Request_Array > Tablica żądań | Przekazano wiele żądań w jednej tablicy |

Struktura żądania (jak w Request_Array )
Nazwa | Opis |
---|---|
Żądanie | Zawiera elementy wewnętrzne wspólne dla wszystkich przewoźników (firmy spedycyjne) |
Zapytanie >id | Dowolny unikalny identyfikator identyfikujący ten pakiet (identyfikator tego elementu tablicy) |
Zapytanie >firma | Nazwa przewoźnika (np.: „fedex”, „ups”, „usps”), aby uzyskać stawki od tych firm za ten pakiet |
Żądanie >Waga_Jednostki | Jednostka wagi (obecnie obsługiwane jest tylko „LB”) |
Zapytanie >Rodzaj usługi | Kod usługi dla określonej usługi przewoźnika, dla której wymagana jest stawka. Zapoznaj się z dokumentacją API przewoźników. |
Zapytanie >RateRequestTypes | „BRAK” dla stawek specyficznych dla konta i „LISTA” dla stawek detalicznych |
Zapytaj >pakiety |
Przykładowy JSON (przed szyfrowaniem) :
{ „Wspólne_parametry”: { "środowisko": "piaskownica", "emailid": "[email protected]", "klucz": "b52ee1f3ab8454589d6a9bd5018d60be", "host": "www.storepep.com", "os": "Windows NT 6.3 build 9600 (Windows 8.1 Home) i586", "Shipper_PersonName": "JOE CHRIST", "Shipper_CompanyName": "MOJA FIRMA", "Shipper_PhoneNumber": "0123456789", "Shipper_Address_StreetLines": "TABLICA JEDWABNA", "Shipper_Address_City": "KOLUMBUS", "Shipper_Address_StateOrProvinceCode": "OH", "Shipper_Address_PostalCode": "43218", "Shipper_Address_CountryCode": "USA", "Recipient_PersonName": "Nazwa Odbiorcy", "Recipient_CompanyName": "XYZ", "Recipient_PhoneNumber": "0123456789", "Recipient_Address_StreetLines": "123 , DROGA XYZ", "Recipient_Address_City": "", "Recipient_Address_StateOrProvinceCode": "WA", "Recipient_Address_PostalCode": "98503", "Recipient_Address_CountryCode": "USA", "Recipient_Address_CountryName": "Stany Zjednoczone (USA)", "Recipient_Address_Residential": "fałsz", "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" }, "Tablica_żądania": [ { "id": "53:1", "firma": [ "Usps" ], "Weight_Units": "LB", "Typ Usługi": "Priorytet", "RateRequestTypes": "BRAK", "pakiety": [ { „waga”: 2, "jednostka": "LBS", "Opis": "Mój pakiet", "no_of_packages": 1, „Numer Sekwencji”: 1 } ] }, { "id": "53,37:1", "firma": [ „fedex” ], "Weight_Units": "LB", "ServiceType": "FEDEX_GROUND", "RateRequestTypes": "BRAK", "pakiety": [ { „waga”: 1,5, "jednostka": "LBS", "Opis": "Mój pakiet", "no_of_packages": 1, „Numer Sekwencji”: 3 } ] } ] }
Po wygenerowaniu takiego obiektu JSON musisz zakodować ten obiekt przy użyciu swojego unikalnego klucza API. Poniżej przedstawiamy algorytm kodowania, aby ułatwić Ci kontynuowanie.
Funkcja PHP do kodowania tego żądania JSON
<?php kodowanie funkcji ($ klucz, $ dane) { $szyfr = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $klucz256 = $klucz; $iv = '1156651@Xadapter'; mcrypt_generic_init($szyfr, $klucz256, $iv); $cipherText256 = mcrypt_generic($cipher,$data ); mcrypt_generic_deinit($szyfr); $cipherHexText256 =bin2hex($cipherText256); zwróć $cipherHexText256; } ?>
Następnie umieść ten zakodowany obiekt w innym obiekcie JSON (z dwoma elementami, „emailid” i „data”) i wyślij go na serwer.
<?php $req=tablica(); $req['emailid']='[email protected]'; Twój zarejestrowany identyfikator e-mail API $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; Twój zarejestrowany klucz API $req['data']=$this->encode($apikey,$JSON_Req); $treść =json_encode($req); ?>
Ostateczne żądanie JSON wygląda tak:
{"emailid":"[email protected]", "dane":"" }
Wyślij ten obiekt JSON na serwer.
Spójrz na poniższy przykład, aby zrozumieć, jak wysłać żądanie w PHP:
$curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
curl_setopt($curl, CURLOPT_HEADER, fałsz);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, prawda);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Typ treści: aplikacja/json"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, fałsz);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, fałsz);
curl_setopt($curl, CURLOPT_POST, prawda);
curl_setopt($curl, CURLOPT_POSTFIELDS, $treść ); // to jest $treść, którą stworzyliśmy w powyższym kodzie
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$odpowiedź = json_decode($json_odpowiedź, prawda);
print_r($odpowiedź);