zaman-ua/ukrposhta 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zaman-ua/ukrposhta

Composer 安装命令:

composer require zaman-ua/ukrposhta

包简介

Client for ukrposhta API

README 文档

README

Ukrposhta - это библиотека для работы с API УкрПошты, далее УП. В данном проекте реализована работа с:

  • Справочники - список адресов в которых работают отделения УП, а именно области, регионы, города, отделения и улицы.
  • Клиенты - работа с контрагентами(создание, редактирование). Клиенты используются при создании отправок.
  • Адреса - работа с адресами клинта(создание, редактирование). Адреса привязываются к клиентам и используются при создании отправок.
  • Отправки - работа с почтовыми отправлениями(создание, редактирование, отслеживание статуса).
  • Формы - получение формы отправки(накладной) в формате pdf.
  • Документацией - получение последней актуальной документации по API.

Установка

composer

composer require zaman-ua/ukrposhta

Использование

Конфигурация

Каждый класс принимает в качестве аргумента конструктора объект-конфигурацию: Ukrposhta\Data\Configuration. В данном классе устанавливаем token и bearer при помощи соответствующих методов-сеттеров

$config = new Ukrposhta\Data\Configuration();
$config->setBearer('string bearer'); 
$config->setToken('string token');

Так же в данном классе можно добавить заголовки для запросов при помощи соответствующего метода

$config->addHeaders([
    'Content-Type' => 'application/json'
]);

Общая Документация

API

Актуальную документацию по параметрам API и возвращаемым полям можно получить на официальном сайте или воспольоваться классом данной библитеки

$config = new Ukrposhta\Data\Configuration();
$config->setBearer('string bearer'); 
$doc = new Ukrposhta\Doc($config);
$doc->save('./');

Метод save принимает два аргумента. Первый является обязательным - это путь для сохранения файла, второй, не обязательный, это имя сохраняемого файла, по-умолчанию "documentation.pdf".

Возвращаемые данные, Исключения(Exceptions)

В случае когда API должен вернуть данные(например при работе со справочниками, с.м. документацию к API) - будет возвращен массив данных. Когда происходит ошибка, будь то серверная либо ошибка API - библиотека бросит исключение (Exception) в соответствии с поведением библиотеки для HTTP запросов GuzzleHttp\Client.

Параметры запросов

В случае, когда необходимо передавать параметры в запросе, метод соответствующего класса в качестве параметра принимает объект класса Ukrposhta\Data\Storage. Конструктор данного класса(Storage) принимает необзательный аргумент в ввиде массива с параметрами в формате ключ-значение. Указать данные можно несколькоми способами:

$params = [
    'firstName' => 'Test_First_Name',
    'lastName' => 'Test_Last_Name'
    'middleName' => 'Test_Middle_Name'
];
$storage = new Ukrposhta\Data\Storage($params);
$storage->addData($storage);
$storage->setData('lastName', Test2_Last_Name);
$storage->firstName = 'Test2_First_Name';

Работа со справочниками

Работа со справочниками представлена следующими классами

  • Ukrposhta\Directory\City
  • Ukrposhta\Directory\District
  • Ukrposhta\Directory\Postoffice
  • Ukrposhta\Directory\Region
  • Ukrposhta\Directory\Street

Для получения списка городов, областей, регионов и улиц есть метод getList для соответствующих классов

$config = new Ukrposhta\Data\Configuration();
$config->setBearer('string bearer'); 
$config->setToken('string token');
$cities = new Ukrposhta\Directory\City($config)->getList();
$districts = Ukrposhta\Directory\District($config)->getList();
$regions = Ukrposhta\Directory\Region($config)->getList();
$streets = Ukrposhta\Directory\Street($config)->getList();

Для получения списка городов с фильтром по региону

$params = new Ukrposhta\Data\Storage();
$params->region_id = 1;
$cities = new Ukrposhta\Directory\City($config)->getList($params);

Получение списка отеделений по id города

$postoffices = new Ukrposhta\Directory\Postoffice($config)->getByCityId(1);

Получение отделения по почтовому индексу

$storage = new Ukrposhta\Data\Storage();
$postoffices = new Ukrposhta\Directory\Postoffice($config)->getByPostIndex(72370);

Адреса, Контрагенты, Отправления

Работа с данными моделями реализована в следующих классах

  • Ukrposhta\Address
  • Ukrposhta\Client
  • Ukrposhta\Shipment

Для создания адреса контрагента, самого контрагента и отправления необходимо воспользоваться методом save соответсвующего класса. Данный метод первым аргументом принимает объект класса Ukrposhta\Data\Storage с параметрами запроса.
Пример создания контрагента

$config = new Ukrposhta\Data\Configuration();
$config->setBearer('string bearer'); 
$config->setToken('string token');
$params = [
    'firstName' => 'Марк'
    'lastName' => 'Зотов'
    'middleName' => 'Олегович'
    'addressId' => 1250990
    'type' => 'INDIVIDUAL'
];
$storage = new Ukrposhta\Data\Storage($params);
$client = new Ukrposhta\Client($config);
$client->save($storage);

Для обновления информации о контрагенте необходимо в методе save вторым аргументом указать UUID контрагента

$client->save($storage, 'string client UUID');

Для получения информации о клиенте необходимо воспользоваться методом get

$client->get('customer id');

Данный метод принимает первым аргументом идентифкатор клиента, по-умолчанию это UUID контрагента. Если указать второй параметр true, то в этом случае первый аргумент будет выступать как external-id

Печать накладных

Для работы с накладным есть класс Ukrposhta\Form с методом getSticker

$config = new Ukrposhta\Data\Configuration();
$config->setBearer('string bearer'); 
$config->setToken('string token');
$form = new Ukrposhta\Form($config);
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/sticker.pdf', 'w');
$params = new Storage([
    'sink' => $resource
])



$form->getSticker('shipment uuid or barcode', $params);

Данный метод принимает два обязательных аргумента, первый - идентификатор отправления(UUID отправления или barcode), . Второй - список параметров передваемых в запросе в виде объекта класса Ukrposhta\Data\Storage, так же в нем можно передать путь для сохраняемого файла. Четвертый - closure для обработки ответа.

zaman-ua/ukrposhta 适用场景与选型建议

zaman-ua/ukrposhta 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 10 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「ukrposhta」 「укр почта」 「укр пошта」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 zaman-ua/ukrposhta 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 zaman-ua/ukrposhta 我们能提供哪些服务?
定制开发 / 二次开发

基于 zaman-ua/ukrposhta 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 10
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 11
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2022-10-25