img
scroll
#

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

Uk Ru En
Статья
#0002

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

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

composer require EasyPost/EasyPost-php

Connect EasyPost API

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" - массив результатов верификации адреса, и другими.

IАналогичным образом нужно указать и сохранить в переменную $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, могут не содержать внятного описания проблемы, а только сообщение о том, что данные для созраняемой сущности не валидны.

Блог
#0002
Статьи, которые могут вас также заинтересовать
Передача данных в Amazon несколько отличается от получения
Рассмотрим передачу данных на примере присвоения заказу трекномера.
Подключение API EasyPost
Подключение API EasyPost
Особенности подключения API EasyPost
Особенности подключения Iiko API
Особенности подключения Iiko API
Iiko API это JSON API. Каждый запрос нужно подписывать специальным временным токеном доступа. Получить временный токен можно используя имя и пароль Вашего Iiko аккаунта, предоставленного Вам Iiko.
Реализация структуры база продуктов с сервиса sql-ex.ru с помощью Doctrine2
Расширяйте проект на прочной основе с использованием встроенного функционала Doctrine2, попробуйте добавить свои классы и таблицы. Характеристика базы продуктов
Свяжитесь с нами
#0013
Готовы Начать? Дайте нам знать!
Телефон:
Адрес:

Украина, Житомир
ул. Витрука 9в

Пн-Пт 9.00 - 19.00

Свяжитесь с нами
#0000
Остались вопросы?
Опишите свою проблему, заполните форму ниже и наши специалисты помогут Вам!
Обязательное поле
Обязательное поле
Обязательное поле
Обязательное поле