omkod / moysklad
PHP SDK Moysklad API 1.2
Requires
- php: >=7.3
- ext-json: *
- doctrine/annotations: ^1.11
- guzzlehttp/guzzle: ^7.0
- jms/serializer: ^3.10
- yogarine/doctrine-annotation-autoload: ^0.3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
- phpunit/phpunit: ^9.1
This package is not auto-updated.
Last update: 2024-10-01 16:20:57 UTC
README
本库旨在方便地与Moysklad的Remap API 1.2版本进行交互。它包含一组函数,允许对实体(创建、读取、修改、删除)执行基本操作。
安装
composer require cdekmarketteam/moyskladcomposer 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);
执行代码后,如果创建成功,将返回对象product,其中包含从API响应中获取的字段(id、href等)。
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 文档