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, ви можете встановити відповідний пакет з допомогою:
composer require EasyPost/EasyPost-php
EasyPost використовує лише один параметр — API-ключ — для підпису запитів. Перед тим, як приступити до роботи з клієнтським кодом, спочатку необхідно імпортувати EasyPost:
use EasyPost;
Всі класи знаходяться в просторі імен EasyPost, тому для встановлення API-ключа для підпису запитів необхідно зробити наступне:
EasyPost\EasyPost::setApiKey($apiKey);
Тепер ви можете виконувати різні запити, наприклад, на створення адреси. Деякі системи, подібні до ShipStation, можуть динамічно приймати лише адресу одержувача, при цьому адреса відправника береться з особистого кабінету. У випадку з EasyPost необхідно передати обидві адреси. Припустимо, у вашій системі вже є сутність "замовлення", у якої є поля, що відповідають за адресу доставки. У цьому випадку код для збереження адреси в EasyPost матиме наступний вигляд:
$receiverAddress = EasyPost\Address::create([
'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.
Тепер давайте подивимося, як створити саму посилку:
$parcel = EasyPost\Parcel::create([
'weight' => $order->getWeight(),
'height' => $order->getHeight(),
'width' => $order->getWidth(),
'length' => $order->getLength(),
]);
У нас є три змінні: $receiverAddress, $senderAddress і $parcel. Вони становлять собою екземпляри класів EasyPost\Address і EasyPost\Parcel відповідно. Пакет EasyPost автоматично кодує і декодує дані у форматі JSON, тому об'єкти можна передавати у масивах. Наприклад, коли ми готові створити відправку, необхідно передати всі отримані об'єкти в метод:
$shipment = EasyPost\Shipment::create([
"to_address" => $fromAddress,
"from_address" => $toAddress,
"parcel" => $parcel,
"options" => [
"label_format" => 'PDF'
],
]);
Якщо все добре, то в поле rates об'єкта $shipment буде масив об'єктів, що містять інформацію про різні служби доставки. Припустимо, що один з перевізників підходить нам, наприклад, USPS з найнижчою вартістю доставки, і ми хочемо придбати наклейку (label) для цієї служби та отримати PDF-файл для друку. В такому випадку, нам потрібно передати методу "buy" об'єкта $shipment наступне значення:
$shipment->buy($shipment->lowest_rate(['USPS']));
Метод 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