EasyPost - логістична платформа, що надає унікальні інструменти та зручне API для автоматизації та оптимізації процесів відправки та відстеження вантажів. Її історія почалася у 2012 році, і сьогодні EasyPost займає провідні позиції серед постачальників рішень для ефективної логістики, обслуговуючи багато галузей бізнесу.
Однією з ключових переваг API EasyPost є можливість компаніям отримати доступ до різноманітних перевізників і обрати найкращі варіанти доставки для своїх відправлень. EasyPost надає комплексний функціонал з багатьма можливостями, про які ми розповімо нижче.

Основні переваги використання EasyPost
- EasyPost надає зручний API, що дозволяє отримувати точні розрахунки вартості доставки прямо на вашому веб-сайті. Тепер ваші клієнти або менеджери зможуть відразу бачити вартість доставки і обрати найбільш підходящий варіант.
- З допомогою EasyPost ви легко можете створювати та друкувати лейби для ваших посилок. Це дозволить зекономити ваш час та спростити процес підготовки пакунків до відправки.
- EasyPost інтегрується з багатьма популярними перевізниками, включаючи Fedex, DHL, USPS, UPS, APC та іншими. Ви зможете отримати доступ до різних варіантів доставки та обрати найкращий для ваших клієнтів.
- За допомогою API відстеження EasyPost ви та ваші клієнти зможете отримувати оновлення про статус доставки в режимі реального часу. Це забезпечить прозорість та довіру до вашого бізнесу.
- EasyPost надає можливість страхувати посилки, що захистить вас від втрат або пошкоджень під час доставки. Таким чином, ви можете бути впевнені в безпеці відправлень.
Приклад підключення до API EasyPost
Для найбільш поширених мов програмування EasyPost надає набір SDK (Software Development Kit). Так, якщо ви користуєтесь PHP, ви можете встановити відповідний пакет з допомогою:
EasyPost використовує лише один параметр - API-ключ - для підпису запитів. Перед тим, як приступити до роботи з клієнтським кодом, спочатку необхідно імпортувати EasyPost:
Всі класи знаходяться в просторі імен EasyPost, тому для встановлення API-ключа для підпису запитів необхідно зробити наступне:
Тепер ви можете виконувати різні запити, наприклад, на створення адреси. Деякі системи, подібні до ShipStation, можуть динамічно приймати лише адресу одержувача, при цьому адреса відправника береться з особистого кабінету. У випадку з EasyPost необхідно передати обидві адреси. Припустимо, у вашій системі вже є сутність "замовлення", у якої є поля, що відповідають за адресу доставки. У цьому випадку код для збереження адреси в EasyPost матиме наступний вигляд:
'verify' => ['delivery'],
'company' => $order->getCompany(),
'street1' => $order->getStreet(),
'street2' => $order->getHouseNumber(),
'city' => $order->getCity(),
'state' => $order->getUserState(),
'zip' => $order->getZip(),
'phone' => $order->getUserPhone(),
'email' => $order->getEmail(),
'country' => $order->getCountryCode(),
]);
В результаті, у відповіді ми отримуємо той самий масив з додатковими полями, включаючи "id" - ідентифікатор адреси в системі EasyPost, "verifications" - масив результатів верифікації адреси та інші. Аналогічним чином, необхідно вказати та зберегти адресу відправника в змінну $senderAddress.
Тепер давайте подивимося, як створити саму посилку:
'weight' => $order->getWeight(),
'height' => $order->getHeight(),
'width' => $order->getWidth(),
'length' => $order->getLength(),
]);
У нас є три змінні: $receiverAddress, $senderAddress і $parcel. Вони представляють собою екземпляри класів EasyPost\Address і EasyPost\Parcel відповідно. Пакет EasyPost автоматично кодує і декодує дані у форматі JSON, тому об'єкти можна передавати у масивах. Наприклад, коли ми готові створити відправку, необхідно передати всі отримані об'єкти в метод для її створення:
"to_address" => $fromAddress,
"from_address" => $toAddress,
"parcel" => $parcel,
"options" => [
"label_format" => 'PDF'
],
]);
Якщо все добре, то в поле rates об'єкта $shipment буде масив об'єктів, що містять інформацію про різні служби доставки. Припустимо, що один з перевізників підходить нам, наприклад, USPS з найнижчою вартістю доставки, і ми хочемо придбати наклейку (label) для цієї служби та отримати PDF-файл для друку. В такому випадку, нам потрібно передати методу "buy" об'єкта $shipment наступне значення:
Метод lowest_rate буде знаходити найбільш дешевий метод доставки з усіх доступних. За замовчуванням система надає список методів доставки для USPS, доки ви не підключите відповідний сервіс. Однак для створення label необхідно підключити цей сервіс. Навіть якщо ви намагаєтесь отримати лейбел USPS, вам потрібно перед тим підключити її.
Оскільки всі наші об'єкти мають унікальні ідентифікатори в системі EasyPost, ми можемо зберігати ці ідентифікатори і в подальшому отримувати інформацію про об'єкти безпосередньо з EasyPost, використовуючи метод "retrieve" для кожного з вищезазначених класів: EasyPost\Shipment, EasyPost\Address і EasyPost\Parcel. Крім того, EasyPost надає можливість створювати всі 4 сутності одним запитом, передаючи в метод create класу EasyPost\Shipment многовимірний масив. Наприклад, ключ "to_address" буде містити масив даних адреси отримувача, і так далі. Однак, розглянутий вище метод дозволяє більш гнучко реагувати на виникаючі помилки валідації.
Щодо валідації, SDK EasyPost автоматично обробляє помилки та генерує виключення, які розробник клієнтського коду повинен буде обробляти. Але повідомлення про помилки, які повертаються сервером EasyPost, можуть бути не завжди зрозумілими та містити лише інформацію про невалідні дані для збереженої сутності.
Якщо вам потрібно налаштувати підключення даного API, залиште, будь ласка, заявку на сторінці "Інтеграція та підключення API".
Статті, які можуть вас також зацікавити


Готові розпочати? Повідомте нас про це!
Україна, Житомир
вул. Вітрука 9в
Пн-Пт 9.00 - 19.00
Poland, Warsaw, 00-842
Łucka street 15/204
Пн-Пт 9.00 - 19.00