cdekmarketteam/moysklad

PHP SDK Moysklad API 1.2

1.5.1 2021-06-01 07:41 UTC

README

该库旨在方便地与Moysklad的Remap API 1.2版本进行交互。它包含一组函数,允许对实体进行基本操作(创建、读取、修改、删除)。

安装

  • composer require cdekmarketteam/moysklad
  • composer dump-autoload

示例

1. 开始

用于与SDK交互的主要类是 MoySklad\ApiClient

要开始工作,需要创建该类的实例,并将以下字段传递给构造函数:

  • API主机地址(《online.moysklad.ru》
  • 强制使用https连接
  • 登录格式为[用户名]@[公司名称]和密码或用于访问API的token
use MoySklad\ApiClient;

$api = new ApiClient('host', true, [
    'login' => 'your_login',
    'password' => 'your_password',
]);

//or

$api = new ApiClient('host', true, [
   'token' => 'your_token',
]);

2. 实体操作

2.1. 获取实体

要访问单个实体的端点,使用方法 ApiClient->entity(),它返回实体基础客户端。此对象允许获取用于操作特定实体的客户端。例如,要获取所有供应商或单个供应商的列表,只需执行以下代码

$counterpartyList = $api->entity()->counterparty()->getList();
$counterparty = $api->entity()->counterparty()->get('id');

可能的过滤器

  • EntityFilter - 实体过滤器,可以分配给多个字段
  • Limit - 分页限制,最大值为1000
  • Offset - 显示开始的位移
  • Order - 排序,可以分配给多个字段
  • Search - 搜索过滤器,仅接受一个值
  • StandardFilter - 标准过滤器字段|值,可以分配给多个字段 操作过滤器
use MoySklad\Util\Param\Limit;
use MoySklad\Util\Param\Offset;
use MoySklad\Util\Param\Order;
use MoySklad\Util\Param\Search;
use MoySklad\Util\Param\EntityFilter;
use MoySklad\Util\Param\StandardFilter;

$params = [
    Limit::eq(50),
    Offset::eq(10),
    Order::asc('name'),
    Order::desc('date'),
    Search::eq('some interesting thing'),
    EntityFilter::eq('product', $product),
    EntityFilter::neq('pricetype', $pricetype),
    StandardFilter::eq('region_id', $regionId),
    StandardFilter::gte('created', $createdDate),
    StandardFilter::like('name', 'ame'),
];

$counterpartyList = $api->entity()->counterparty()->getList($params);

将过滤器数组作为参数传递给实体客户端的方法调用,在可能的情况下。

2.2. 创建实体

要向API发送创建实体的请求,只需创建一个类实例,填写必要的字段,然后使用相应客户端调用 create() 方法,将创建的对象作为参数传递

$product = new Product();
$product->name = 'Новый продукт';

$product = $api->entity()->product()->create($product);

代码执行成功且创建成功后,将返回填充了从API响应中获取的字段的对象 product(例如 idhref 等)。

2.3. 修改实体

要修改已创建的实体,使用实体客户端的 editById()editByEntity() 方法

$product->name = 'new name';
$product = $api->entity()->product()->update($product);

2.4. 嵌套实体

通过实体客户端的特殊方法操作嵌套实体。例如,获取账户或供应商账户的方法

$counterpartyAccountsList = $api->entity()->counterparty()->getAccountsList('counterparty_id');

$counterpartyAccount = $api->entity()->counterparty()->getAccount('counterparty_id', 'account_id');

其他方法以完全相同的方式操作。

某些实体具有属性 - 嵌套实体(例如,供应商具有完整的地址)。这些嵌套实体,如完整地址,在API响应中仅填充元数据,要填充其基本属性,需要调用 fetch() 方法

$counterparty = $api->entity()->counterparty()->get('id');
$addressCity = $counterparty->legalAddressFull->city; // null

$counterparty->legalAddressFull->fetch();
$addressCity = $counterparty->legalAddressFull->city; // название города

每个实体都有 fetch() 方法,它可以用来简单地更新实体。

进一步了解

有关可用的方法和实体以及API操作的限制的更多信息,请参阅 Moysklad API 1.2 文档