serj1chen/nova-poshta-sdk-php

2.0.6 2019-07-06 17:59 UTC

This package is auto-updated.

Last update: 2024-09-07 05:41:36 UTC


README

在habrahabr上的文章

为了快速处理大量发货,使用公司“新邮”的信息系统与合作伙伴/客户软件综合系统之间的电子数据交换方式。数据交换通过 ARІ 程序环境进行。

要开始使用“新邮”公司的 ARІ 功能,需要在 my.novaposhta.ua 的个人账户设置页面创建密钥。ARІ 密钥必须包含在每个请求中。注意!所有创建的密钥都有时间限制,强烈建议考虑此限制。

SDK 是根据官方文档开发的。有关模型和方法的更详细信息,请访问个人账户 API 2 官方文档页面:[新邮](https://my.novaposhta.ua)。SDK 不是新邮的官方 SDK,我是为了个人目的开发的。

连接 SDK

方法 1(composer)

通过 composer 安装 SDK 是最简单的方法。

在项目根目录下创建 composer.json 文件

  {
      "require": {
          "serj1chen/nova-poshta-sdk-php": "2.0.*"
      }
  }

安装 composer

  $ curl -sS https://getcomposer.org/installer | php
  $ php composer.phar install

连接 composer 自动加载器

  include_once "vendor/autoload.php";

方法 2(git)

克隆仓库

  git clone git://github.com/serj1chen/nova-poshta-sdk-php

连接 SDK 自动加载器

  include_once "nova-poshta-sdk-php/lib/NovaPoshta/bootstrap.php";

SDK 结构

配置文件设置(《Config》)

在开始使用 API 之前,需要设置配置文件

   Use NovaPoshta\Config;
   
   Config::setApiKey('<Ваш ключ>');
   Config::setFormat(Config::FORMAT_JSONRPC2);
   Config::setLanguage(Config::LANGUAGE_UA);

示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Config_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Config_example.php)

数据传输可能格式(在 setFormat 方法中指定格式)

  • FORMAT_JSON
  • FORMAT_JSONRPC2(推荐)
  • FORMAT_XML

SDK 模型的工作方式(《ApiModels》)

所有模型都位于 ApiModels 文件夹中。

模型

  • Address:用于处理地址的模型。示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Address_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Address_example.php)
  • Common:用于处理目录的模型。示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Common_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Common_example.php)
  • ContactPerson:用于创建联系人的模型。示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/ContactPerson_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/ContactPerson_example.php)
  • Counterparty:用于处理合同方数据的模型。示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Counterparty_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Counterparty_example.php)
  • InternetDocument:用于处理发货的模型。示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/InternetDocument_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/InternetDocument_example.php)
  • ScanSheet:用于处理接收/发送记录的模型的示例:[https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/ScanSheet_example.php](https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/ScanSheet_example.php)

模型类中注释描述了所有方法。

模型方法的工作方式

模型方法的工作方式:save, update, delete。 填充模型所需的值并调用所需方法。示例

  use NovaPoshta\ApiModels\Counterparty;
  
  $counterparty = new Counterparty();
  $counterparty->setCounterpartyProperty('Recipient');
  $counterparty->setCityRef('db5c88d0-391c-11dd-90d9-001a92567626');
  $counterparty->setCounterpartyType('PrivatePerson');
  $counterparty->setFirstName('Пилипко');
  $counterparty->setLastName('Вася');
  $counterparty->setMiddleName('Сергеевич');
  $counterparty->setPhone('+380661122333');
  $counterparty->setEmail('test@i.ua');
  
  $result = $counterparty->save();

静态方法的工作方式。 在方法中传递 MethodParameters 对象

  use NovaPoshta\ApiModels\Counterparty;
  use NovaPoshta\MethodParameters\MethodParameters;
  
  $data = new MethodParameters();
  $data->CounterpartyProperty = 'Recipient';
  $data->Page = 1;
  $data->CityRef = '8d5a980d-391c-11dd-90d9-001a92567626';
  $data->FindByString = 'Петр';

  $result = Counterparty::getCounterparties($data);

或者可以使用继承自类 MethodParameters 的类 MethodParameters。这些类有参数设置器,可以将参数传递给模型静态方法。带有参数的类名称由两部分组成,即模型名称(ApiModels)和模型静态方法名称。使用示例

  use NovaPoshta\ApiModels\Counterparty;
  use NovaPoshta\MethodParameters\MethodParameters;
  use NovaPoshta\MethodParameters\Counterparty_getCounterparties;
  
  $data = new Counterparty_getCounterparties();
  $data->setCounterpartyProperty('Recipient');
  $data->setPage(1);
  $data->setCityRef('8d5a980d-391c-11dd-90d9-001a92567626');
  $data->setFindByString('Петр');

  $result = Counterparty::getCounterparties($data);

模型辅助类用于处理模型(《Models》)

这些类用于填充模型(《ApiModels》)

日志记录(《Logger》)

如果您需要记录发送/接收请求的数据,需要创建一个继承自 Logger.php 的类,并将该类的实例传递到文件 Config.php 的 setClassLogger 方法。

  use NovaPoshta\Config;
  
  Config::setClassLogger(new Logger_example());  

日志记录类示例: https://github.com/serj1chen/NovaPoshta-SDK-PHP/blob/master/example/Logger_example.php。 (相应地,您可以将数据记录到某处)

setOriginalData 方法:新邮API的请求/响应。参数:toData - 请求(类型:string);fromData - 响应(类型:string)。

setData 方法:新邮API的请求/响应,格式为SDK。参数:toData - 请求(对象:DataContainer);fromData - 响应(对象:DataContainerResponse)。

** SDK 不是新邮的官方 SDK

许可

MIT