Меню

Подключение API EasyPost

logo
Особенности подключения API EasyPost
Подключение API EasyPost

Особенности подключения API EasyPost

Для самых широкоиспользуемых языков программирования EasyPost предосталяет SDK.

Так, если вы используете PHP, - можете установить соответствующий пакет с помощью composer:

composer require EasyPost/EasyPost-php

EasyPost для подписи запросов использует только один параметр, API-ключ.

В клиентском коде вам необходимо сначала импортировать EasyPost 

use EasyPost;

Все классы находятся в пространстве имен EasyPost, поэтому для установки API-ключа для подписи запросов необходимо сделать следующее:

EasyPost\EasyPost::setApiKey($apiKey);

Теперь можно делать запросы, например на создание адреса. Некоторые системы, такие как ShipStation, могут динамически принимать адрес только получателя, а адрес отправителя брать из личного кабинета, но может и не принимать ;). EasyPost же необходимо передать оба адреса.

Допустим в вашей системе уже есть сущность заказ, у которого есть поля отвечающие за адрес доставки. Тогда код для сохранения адреса в Eaypost будет выглядеть следующим образом:

$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 для данной отправки.

По умолчанию система предоставляет список методов доставки для USPS, пока вы не подключите службы, но создание наклеек будет работать только в том случае, если вы подключили службу. Даже если вы пытаетесь получить наклейку USPS, вы должны подключить USPS.

Т.к. все наши объекты имеют id в системе EasyPost, мы можем сохранять эти идентификаторы, а позже брать инфо об объектах непосредственно с EasyPost, используя метод "retrieve" каждого из выщеприведенных классов: EasyPost\Shipment, EasyPost\Address и EasyPost\Parcel. Кроме того, EasyPost предоставляет возможность создавать все 4 сущности в один запрос, для этого нужно передать в метод create класса EasyPost\Shipment многомерный массив, например ключ "to_address" будет содержать массив данных адреса получателя, и т.д. Но рассмотренный выше метод работы позволяет более гибко реагировать на возникающие ошибки валидации.

К слову о валидации, EasyPost SDK обрабатывает ошибки сам и выкидывает исключения, которые программисту клиентского кода необходимо будет обработать, но сами сообщения об ошибках, возвращаемые сервером EasyPost, могут не содержать внятного описания проблемы, а только сообщение о том, что данные для созраняемой сущности не валидны.

Опыт подключения API Admitad 20.09.2019 Опыт подключения API Admitad
Admitad - это глобальная партнерская сеть с большим выбором партнерских программ, высокими ставками, экспресс-выплатами и множеством инструментов.

Рекомендации по подключению к API Amazon Marketplace Web Service (MWS) 13.09.2019 Рекомендации по подключению к API Amazon Marketplace Web Service (MWS)
Как подключиться к Amazon MWS API? Процесс получения списка заказов и формирование подписи запроса с использованием нескольких параметров

Возврат к списку