b1tc0re / evotor-php-sdk
Evotor PHP SDK
dev-master
2024-09-07 22:29 UTC
Requires
- dusank/knapsack: ^10.0
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-09-07 22:33:03 UTC
README
Evotor云的便捷REST API v2客户端。允许您从云和Evotor终端进行数据操作。具有便捷的fluent接口和测试 :-)
注意!此客户端为非官方版本,不提供支持!
安装
推荐通过 Composer 进行安装
$ composer require kilylabs/evotor-php-sdk
使用
- 首先,获取API令牌(在这里)
- (可选) 获取您的应用程序标识符(仅用于PUSH通知)
- 在Evotor开发者门户的集成部分设置必要的权限(https://dev.evotor.ru)
初始化
<?php require 'vendor/autoload.php'; $client = new Kily\API\Evotor\Client('<API_KEY>','<APP_KEY>',[ 'debug'=>true, // Только для тестирования ]);
商店(https://developer.evotor.ru/docs/rest_stores.html);
// Получить все магазины $stores = $client->stores()->get()->toArray(); var_dump($stores); // Получить все магазины и выбрать первый из них $store = $client->stores()->get()->first(); var_dump($store); $store_id = $store['id']; // Получить магазина по id $store = $client->stores()->get($store_id)->toArray(); var_dump($store); // То же самое $store = $client->stores($store_id)->get()->toArray(); var_dump($store);
终端(https://developer.evotor.ru/docs/rest_smart_terminals.html)
// Получить все терминалы $devices = $client->devices()->get()->toArray(); var_dump($devices); // Получить все магазины и выбрать первый из них $device = $client->devices()->get()->first(); var_dump($device);
员工(https://developer.evotor.ru/docs/rest_employees.html)
// Получить всех сотрудников $employees = $client->employees()->get()->toArray(); var_dump($employees); // Получить всех сотрудников и выбрать первого из них $employee = $client->employees()->get()->first(); var_dump($employee);
文档(https://developer.evotor.ru/docs/rest_documents.html)
// Получить все документы $documents = $client->stores($store_id)->documents()->get()->toArray(); var_dump($documents); // Получить 5 первых документов $documents = $client->stores($store_id)->documents()->limit(5)->get()->toArray(); var_dump($documents); // Получить все документы и выбрать первый из них $document = $client->stores($store_id)->documents()->get()->first(); var_dump($document); $document_id = $document['id']; // Получить документ по id $document = $client->stores($store_id)->documents($document_id)->get()->toArray(); var_dump($document);
产品(https://developer.evotor.ru/docs/rest_products.html)
// Получить все товары $products = $client->stores($store_id)->products()->get()->toArray(); var_dump($products); // Получить 5 первых товаров $products = $client->stores($store_id)->products()->limit(5)->get()->toArray(); var_dump($products); // Получить все товары и выбрать первый из них $product = $client->stores($store_id)->products()->get()->first(); var_dump($product); $product_id = $product['id']; // Получить товар по id $product = $client->stores($store_id)->products($product_id)->get()->toArray(); var_dump($product); // Создать товар $data = $client->stores($store_id)->products()->create([ 'type' => 'NORMAL', 'name' => 'JACKET1', 'code' => '100500', 'price' => 100, 'cost_price' => 50, 'quantity'=>1, 'measure_name' => 'шт', 'tax' => 'NO_VAT', 'allow_to_sell' => true, 'description' => 'JACKET', 'article_number' => '3773-9001-046', 'barcodes' => array ( 0 => '3773-9001-046', ), ]); if($client->isOk()) { $product = $data->toArray(); var_dump($product); $product_id = $product['id']; } // Обновить товар $data = $client->stores($store_id)->products()->update($product_id,[ 'type' => 'NORMAL', 'name' => 'JACKET1', 'code' => '100500', 'price' => 100, 'cost_price' => 50, 'quantity'=>1, 'measure_name' => 'шт', 'tax' => 'NO_VAT', 'allow_to_sell' => true, 'description' => 'JACKET', 'article_number' => '3773-9001-046', 'barcodes' => array ( 0 => '3773-9001-046', ), ]); if($client->isOk()) { $product = $data->toArray(); var_dump($product); $product_id = $product['id']; } // Обновить товар (пакетный запрос) // Несмотря на то, что это НЕ ОПИСАНО в документации, опытным путем // удалось выяснить, что для пакетного обновления нужно вставлять id // в тело запроса $data = $client->stores($store_id)->products()->bulk()->update([ [ 'id' => '52f811b4-3940-4206-83c3-673badf5468c', 'type' => 'NORMAL', 'name' => 'JACKET1', 'code' => '100500', 'price' => 100, 'cost_price' => 50, 'quantity'=>1, 'measure_name' => 'шт', 'tax' => 'NO_VAT', 'allow_to_sell' => true, 'description' => 'JACKET', 'article_number' => '3773-9001-046', 'barcodes' => array ( 0 => '3773-9001-046', ), ], [ 'id' => '53f811b4-3940-4206-83c3-673badf5468c', 'type' => 'NORMAL', 'name' => 'JACKET2', 'code' => '100500', 'price' => 100, 'cost_price' => 50, 'quantity'=>1, 'measure_name' => 'шт', 'tax' => 'NO_VAT', 'allow_to_sell' => true, 'description' => 'JACKET', 'article_number' => '3773-9001-046', 'barcodes' => array ( 0 => '3773-9001-046', ), ], ])->toArray(); if($client->isOk()) { if($data['status'] == 'ACCEPTED') { $bulk_id = $data['id']; $bulk_data = $client->bulks()->get($bulk_id)->toArray(); if($bulk_data['status'] == 'COMPLETED') { // обработка результата... } } } // Обновить товар (более короткая версия) // Из-за ограничения REST API v2, чтобы одновить товар, вам нужно подставлять все данные // при обновлении товара. Данный метод решает эту проблему ценой дополнительного запроса get() $data = $client->stores($store_id)->products()->fetchUpdate($product_id,[ 'name' => 'JACKET100500', ]); if($client->isOk()) { $product = $data->toArray(); var_dump($product); $product_id = $product['id']; } // Удалить товар $data = $client->stores($store_id)->products()->delete($product_id); // Удалить товар (пакетный запрос): $data = $client->stores($store_id)->products()->bulk()->delete([$product_id1,$product_id2,$product_id3])->toArray(); if($data['status'] == 'ACCEPTED') { $bulk_id = $data['id']; $bulk_data = $client->bulks()->get($bulk_id)->toArray(); if($bulk_data['status'] == 'COMPLETED') { // обработка результата... } }
产品组(https://developer.evotor.ru/docs/rest_products_groups.html);
// Получить все группы товаров $groups = $client->stores($store_id)->groups()->get()->toArray(); var_dump($groups); // Получить 5 первых групп товаров $groups = $client->stores($store_id)->groups()->limit(5)->get()->toArray(); var_dump($groups); // Получить все группы товаров и выбрать первый из них $group = $client->stores($store_id)->groups()->get()->first(); var_dump($group); $group_id = $group['id']; // Получить группу товара по id $group = $client->stores($store_id)->groups($group_id)->get()->toArray(); var_dump($group); // Создать группу товара $data = $client->stores($store_id)->groups()->create([ 'name' => 'TEST TEST TEST', ]); if($client->isOk()) { $group = $data->toArray(); var_dump($group); $group_id = $group['id']; } // Обновить группу товара $data = $client->stores($store_id)->groups()->update($group_id,[ 'name' => 'TEST TEST TEST 2', ]); if($client->isOk()) { $group = $data->toArray(); var_dump($group); $group_id = $group['id']; } // Обновить группу товара (пакетный запрос) // Несмотря на то, что это НЕ ОПИСАНО в документации, опытным путем // удалось выяснить, что для пакетного обновления нужно вставлять id // в тело запроса $data = $client->stores($store_id)->groups()->bulk()->update([ [ 'id' => '52f811b4-3940-4206-83c3-673badf5468c', 'name' => 'TEST321', ], [ 'id' => '53f811b4-3940-4206-83c3-673badf5468c', 'name' => 'TEST123', ], ]); if($client->isOk()) { if($data['status'] == 'ACCEPTED') { $bulk_id = $data['id']; $bulk_data = $client->bulks()->get($bulk_id)->toArray(); if($bulk_data['status'] == 'COMPLETED') { // обработка результата... } } } // Удалить группу товара $data = $client->stores($store_id)->groups()->delete($group_id); // Удалить группу товара (пакетный запрос): $data = $client->stores($store_id)->groups()->bulk()->delete([$group_id1,$group_id2,$group_id3])->toArray(); if($data['status'] == 'ACCEPTED') { $bulk_id = $data['id']; $bulk_data = $client->bulks()->get($bulk_id)->toArray(); if($bulk_data['status'] == 'COMPLETED') { // обработка результата... } }
批量请求(https://developer.evotor.ru/docs/rest_bulk_tasks.html)
// Получить все пакетные задачи $bulks = $client->bulks()->get()->toArray(); var_dump($bulks); // Получить все пакетные задачи и выбрать первый из них $bulk = $client->bulks()->get()->first(); var_dump($bulk); $bulk_id = $bulk['id']; // Получить пакетную задачу по id $bulk = $client->bulks()->get($bulk_id)->get()->toArray(); var_dump($bulk);
一些有用的方法
// Итерация и маппинг результатов (используется библиотека https://github.com/DusanKasan/Knapsack) $list = $client->stores($store_id)->products()->get()->map(function($item){ return $item['id']; })->toArray(); // Получить количество оставшихся запросов (X-Rate-Limit-Remaining) $data = $list = $client->stores($store_id)->products()->get(); var_dump($data->getResponse()->getHeader('X-RateLimit-Remaining')[0]);
待办事项
- 完成PUSH通知
- 文档
- 方法验证
- 分页