Как получить доступ к тарифам нескольких перевозчиков через единый API (с бесплатным API доставки)
Опубликовано: 2017-02-27
Последнее обновление — 24 февраля 2020 г.
В этой статье вы узнаете, как получить доступ к этому API и получить внутренние и международные тарифы на вашу посылку от различных перевозчиков, таких как FedEx, UPS и USPS. Вам просто нужно указать адрес отправителя, адрес получателя, тип услуги и данные авторизации для конкретного перевозчика в виде зашифрованных данных JSON.
Чтобы использовать этот API, вам необходимо зарегистрироваться на http://shippingapi.storepep.com и получить бесплатный ключ API по электронной почте, вам просто нужно указать свой идентификатор электронной почты во время регистрации.
ПОЛУЧИТЬ: Список доступных сервисов
1: Получить все доступные услуги FedEx:
Команда : curl http://shippingapi.storepep.com/api/shippings/fedex-services
Выход :
{
"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: Получить все доступные услуги UPS:
Команда : curl http://shippingapi.storepep.com/api/shippings/ups-services
Выход :
{
'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: Получите все доступные услуги USPS:
Команда : curl http://shippingapi.storepep.com/api/shippings/usps-services
Выход :
{
'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
Чтобы использовать Rates API, сначала нам нужно понять структуру этого API-запроса.
| Имя | Описание |
|---|---|
| Общие_параметры | Содержит внутренние элементы, общие для всех судоходных компаний |
| Common_Params >окружающая среда | для тестового режима: песочница, для производственного режима: живой |
| Common_Params >идентификатор электронной почты | Идентификатор электронной почты, зарегистрированный для этого API |
| Общие_параметры >ключ | API-ключ, полученный при регистрации |
| Общие_параметры > хост | Необязательно (ваше имя хоста) |
| Common_Params > OS | Необязательно (информация о вашей операционной системе) |
| Common_Params >Shipper_PersonName | Имя отправителя |
| Common_Params >Shipper_CompanyName | Компания отправителя |
| Common_Params >Номер телефона отправителя | Номер телефона отправителя |
| Common_Params >Shipper_Address_StreetLines | Адрес отправителя |
| Common_Params >Shipper_Address_City | Город отправителя |
| Common_Params >Shipper_Address_StateOrProvinceCode | Код штата/провинции отправителя (*не более двух букв) |
| Common_Params >Shipper_Address_PostalCode | Почтовый индекс отправителя |
| Common_Params >Shipper_Address_CountryCode | Код страны отправителя (*только двухбуквенный код) |
| Common_Params >Recipient_PersonName | Имя получателя |
| Common_Params >Recipient_CompanyName | Компания получателя |
| Common_Params >Recipient_PhoneNumber | Телефон получателя |
| Common_Params >Recipient_Address_StreetLines | Адрес получателя |
| Common_Params >Recipient_Address_City | Город получателя |
| Common_Params >Recipient_Address_StateOrProvinceCode | Код штата/провинции получателя () |
| Common_Params >Recipient_Address_PostalCode | Почтовый индекс получателя |
| Common_Params >Recipient_Address_CountryCode | Код страны получателя |
| Common_Params >Recipient_Address_CountryName | Страна получателя |
| Common_Params >Recipient_Address_Residential | Верно/неверно (адрес проживания получателя) |
| Common_Params >ключ_fedex | Ключ получен от FedEx |
| Common_Params > пароль_fedex | Пароль FedEx |
| Общие_параметры >fedex_account_number | Номер счета FedEx |
| Общие_параметры >fedex_meter_number | Номер счетчика FedEx |
| Общие_параметры >ups_key | Ключ получен от UPS |
| Common_Params >ups_password | пароль ИБП |
| Common_Params >ups_account_number | номер счета ИБП |
| Общие_параметры >ups_username | Имя пользователя, полученное от UPS |
| Общие_параметры >имя_пользователя_usps | Имя пользователя USPS |
| Request_Array | Этот объект содержит запросы для нескольких компаний и нескольких пакетов |
| Request_Array > Массив запросов | Несколько запросов переданы в одном массиве |

Структура запроса (как в Request_Array )
| Имя | Описание |
|---|---|
| Запрос | Содержит внутренние элементы, общие для всех перевозчиков (судоходных компаний) |
| Запрос >идентификатор | Любой уникальный идентификатор для идентификации этого пакета (идентификатор этого элемента массива) |
| Запрос >компания | Название перевозчика (например: «fedex», «ups», «usps»), чтобы узнать тарифы этих компаний на этот пакет. |
| Запрос >Weight_Units | Единица веса (в настоящее время поддерживается только «фунт») |
| Запрос > Тип услуги | Сервисный код для конкретной услуги оператора связи, для которой требуется тариф. См. документацию по API операторов связи. |
| Запрос > RateRequestTypes | «НЕТ» для конкретных тарифов и «СПИСОК» для розничных тарифов. |
| Запрос >пакеты |
Пример JSON (до шифрования) :
{
«Общие_параметры»: {
"среда": "песочница",
"emailid": "[email protected]",
"ключ": "b52ee1f3ab8454589d6a9bd5018d60be",
"хост": "www.storepep.com",
"os": "Windows NT 6.3 сборка 9600 (Windows 8.1 Домашняя) i586",
"Shipper_PersonName": "ДЖО КРИСТ",
"Shipper_CompanyName": "МОЯ КОМПАНИЯ",
"Номер Телефона_Отправителя": "0123456789",
"Shipper_Address_StreetLines": "ШЕЛКОВАЯ ДОСКА",
"Shipper_Address_City": "КОЛУМБУС",
"Shipper_Address_StateOrProvinceCode": "ОН",
"Shipper_Address_PostalCode": "43218",
"Shipper_Address_CountryCode": "США",
"Recipient_PersonName": "Имя получателя",
"Recipient_CompanyName": "XYZ",
"Recipient_PhoneNumber": "0123456789",
"Recipient_Address_StreetLines": "123, ДОРОГА XYZ",
"Recipient_Address_City": "",
"Recipient_Address_StateOrProvinceCode": "WA",
"Recipient_Address_PostalCode": "98503",
"Recipient_Address_CountryCode": "США",
"Recipient_Address_CountryName": "Соединенные Штаты (США)",
"Recipient_Address_Residential": "ложь",
"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"
},
"Запрос_Массив": [
{
"id": "53:1",
"Компания": [
"успс"
],
"Weight_Units": "фунты",
"ТипСервис": "Приоритет",
"RateRequestTypes": "НЕТ",
"пакеты": [
{
"вес": 2,
«единица измерения»: «фунты»,
"Описание": "Мой пакет",
"количество_пакетов": 1,
"Порядковый номер": 1
}
]
},
{
"id": "53,37:1",
"Компания": [
"федекс"
],
"Weight_Units": "фунты",
«Тип услуги»: «FEDEX_GROUND»,
"RateRequestTypes": "НЕТ",
"пакеты": [
{
"вес": 1,5,
«единица измерения»: «фунты»,
"Описание": "Мой пакет",
"количество_пакетов": 1,
"Порядковый номер": 3
}
]
}
]
}
После создания такого объекта JSON вам необходимо закодировать этот объект с помощью вашего уникального ключа API. Мы предоставляем алгоритм кодирования ниже, чтобы вам было легко продолжить.
Функция PHP для кодирования этого запроса JSON
<?php
функция кодирования ($ ключ, $ данные)
{
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$key256 = $ключ;
$iv = '1156651@Xadapter';
mcrypt_generic_init($cipher, $key256, $iv);
$cipherText256 = mcrypt_generic($cipher,$data);
mcrypt_generic_deinit ($ шифр);
$cipherHexText256 =bin2hex($cipherText256);
вернуть $cipherHexText256;
}
?>Затем поместите этот закодированный объект в другой объект JSON (с двумя элементами: «emailid» и «данные») и отправьте его на сервер.
<?php $req=массив(); $req['emailid']='[email protected]'; Ваш идентификатор электронной почты, зарегистрированный в API $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; Ваш зарегистрированный КЛЮЧ API $req['data']=$this->encode($apikey,$JSON_Req); $content = json_encode ($ req); ?>
Окончательный запрос JSON выглядит так:
{"emailid":"[email protected]",
"данные":""
}Отправьте этот объект JSON на сервер.
Взгляните на приведенный ниже пример, чтобы понять, как отправить запрос в PHP:
$curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
curl_setopt ($ curl, CURLOPT_HEADER, ложь);
curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, правда);
curl_setopt($curl, CURLOPT_HTTPHEADER, массив("Тип контента: приложение/json"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, ложь);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, ложь);
curl_setopt ($ curl, CURLOPT_POST, правда);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content ); // это $content, который мы создали в коде выше
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close ($ завиток);
$ ответ = json_decode ($ json_response, правда);
print_r ($ ответ);
