Giter VIP home page Giter VIP logo

ozon-seller's People

Contributors

animkatt avatar aratnikov avatar ebykovski avatar electromystyle avatar exlh avatar f4llou7 avatar gam6itko avatar holdmann avatar jumas-cola avatar nickmitin avatar sergei11156 avatar vampirus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ozon-seller's Issues

Валидатор «съедает» наименование товара

В импорте товара /v2/product/import обрезается параметр name. В результате в Озон товар попадает без названия.
Конфиг валидатора product_validator_v2.php просится, чтобы его дополнили.

Загрузка изображений

/v1/product/pictures/import - Загрузка\Обновление изображений

/v1/product/pictures/info - статус загрузки изображений

image360

Привет! Как мне в созданый товар добавить images360

PHP 7.0 version support

Package gam6itko/ozon-seller at version has a PHP requirement incompatible with your PHP version (7.0.33)

can't use api:https://api-seller.ozon.ru/v1/product/import-by-sku,return error:Техническая ошибка

api:
https://api-seller.ozon.ru/v1/product/import-by-sku
param:

{
  "offer_id": "82605303223525",
  "old_price": "6158",
  "price": "3658",
  "premium_price": "3600",
  "currency_code": "CNY",
  "sku": 826053031,
  "vat": "0"
}

result:

{
  "result": {
    "items": [
      {
        "offer_id": "82605303223525",
        "product_id": 0,
        "status": "failed",
        "errors": [
          {
            "code": "bad_request_error",
            "field": "",
            "attribute_id": 0,
            "state": "new",
            "level": "error",
            "description": "Техническая ошибка",
            "optional_description_elements": [],
            "attribute_name": "",
            "message": "Неверно указана валюта"
          }
        ]
      }
    ],
    "total": 1
  }
}

Некорректная обработка сетевых ошибок

} catch (RequestExceptionInterface $exc) {
// guzzle
$response = $exc->getResponse();
$contents = $response->getBody()->getContents();
$this->throwOzonException($contents ?: "Error status code: {$response->getStatusCode()}");
}

Метод getResponse не является частью интерфейса RequestExceptionInterface. В частности, он отсутствует в классе \Http\Client\Exception\NetworkException, в результате при сетевых ошибках получаем

Call to undefined method Http\Client\Exception\NetworkException::getResponse()

PHP Fatal error при 502 ответе озона

Озон отвечает 502 кодом и

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx</center>
</body>
</html>

В итоге ошибка
PHP Fatal error: Uncaught RuntimeException: Invalid json error response: in /vendor/gam6itko/ozon-seller/src/Service/AbstractService.php:127

Ошибка в запросе

Для получения отчета по товарам используется запрос со словом products, а не product.

Invalid JSON payload

Здравствуйте.
Поставил Вашу библиотеку всё настроил. В итоге получаю Invalid JSON payload
Конфиг такой:
array(3) {
["clientId"]=>
string(3) "836"
["apiKey"]=>
string(36) "0296d4f2-70a1-4c09-b507-904fd05567b9"
["host"]=>
string(24) "http://cb-api.ozonru.me/"
}

Т.е. пытаюсь по тестовому апи получить данные о списке заказов по V3

$this->client_config = [
            'clientId' => $this->config['test'] ? self::TEST_CLIENT_ID : $this->config['client_id'],
            'apiKey' => $this->config['test'] ? self::TEST_API_KEY : $this->config['api_key'],
            'host' => 'http://'.$host.'/'
        ];
        $this->client = new GuzzleAdapter(new GuzzleClient());
        $this->requestFactory = new RequestFactory();
        $this->streamFactory = new StreamFactory();
$this->service = new FbsService($this->client_config, $this->client, $this->requestFactory, $this->streamFactory);
$data = $this->service->list();

Я вывел данные по ошибке:

protected function throwOzonException(string $responseBodyContents): void
    {
        var_dump('$responseBodyContents', $responseBodyContents);
        $errorData = json_decode($responseBodyContents, true);
        if (JSON_ERROR_NONE !== json_last_error()) {
            throw new OzonSellerException($responseBodyContents);
        }

        if (!class_exists($className = $this->getExceptionClassByName($errorData['error']['code']))) {
            throw new OzonSellerException($responseBodyContents);
        }

        $errorData = array_merge([
            'message' => '',
            'data'    => [],
        ], $errorData['error']);

        $refClass = new \ReflectionClass($className);
        /** @var \Throwable $instance */
        $instance = $refClass->newInstance($errorData['message'], $errorData['data']);
        throw $instance;
    }

Получаю:

string(21) "$responseBodyContents" 
string(203) "{"error":{"code":"BAD_REQUEST","message":"Invalid JSON payload","data":[{"name":"cause","code":"","value":"json: cannot unmarshal array into Go value of type map[string]json.RawMessage","message":""}]}} "

Подскажите в чём может быть дело?

Service\V2\Posting\FbsService unfulfilledList ошибка, если не передать with

Если при вызове unfulfilledList не передать значение with, то озон не может распарсить такой json
{"with":[],"status":["awaiting_packaging"],"sort_by":"updated_at","dir":"asc","offset":0,"limit":50}
Ошибка:
Data: [{"name":"cause","code":"","value":"json: cannot unmarshal array into Go value of type map[string]json.RawMessage","message":""}]

если передать, то запрос будет таким
{"with":{"barcodes":true},"status":["awaiting_packaging"],"sort_by":"updated_at","dir":"asc","offset":0,"limit":50}
и всё норм

Изменения в методах

От Озона:
Мы запустили вторую версию API, где обновили методы получения списков заказов и их обработки. Она работает стабильнее и лучше оптимизирована. Документация по новой версии: для схемы «Отгрузка со склада продавца», для схемы «Отгрузка со склада Ozon». И важно: перейти на новую версию нужно до Нового года, так как после 9 января старая версия работать уже не будет.

метод /v1/brand/company-certification/list еще реализован ?

Здравствуйте,
Правильно ли я понял, что данный метод в топике у Вас еще не реализован?

ps. Пробую использовать Вашу библиотеку и получаю ошибку по таску, что импортируемый товар подлежит сертификации со ссылкой на данный метод, а быстрым поиском не нашёл в библиотеке.

Получить комиссию Озона для подсчёта прибыли?

Есть необходимость считать реальную прибыль, для этого надо получать комиссию Озона.
В документации нет описания методов для получения комиссии.

Задавал вопрос, ответили, что метод есть. Может быть его включить в библиотеку:

POST /v1/product/list/price
{
  "filter": {
    "offer_id": [],
    "product_id": [],
    "visibility": "ALL"
  },
  "page": 1,
  "page_size": 100
}
Ответ:
{
  "result": {
    "items": [
      {
        "buybox_price": "string",
        "commission": {
          "percent": 0,
          "value": 0
        },
        "id": 0,
        "offer_id": "string",
        "old_price": "string",
        "premium_price": "string",
        "price": "string",
        "recommended_price": "string"
      }
    ],
    "total": 0
  }
}

Вопрос по ProductService V3

Добрый день, подскажите, будет ли реализован в ближайшее время в вашей библиотеки ProductService V3?
С 30 августа 2022 года Ozon отключает часть методов, и в списке по ссылке Отключение методов есть следующие строки:
Информация о количестве остатков -> /v3/product/info/stocks
Получить описание характеристик товара -> /v3/products/info/attributes
Методы предыдущих версий будут не доступны.

Undefined index: error

Здравствуйте. Частенько получаем следующую ошибку:

Undefined index: error at /var/www/vendor/gam6itko/ozon-seller/src/Service/AbstractService.php:146)

Запрос:

{
    "method": "POST",
    "uri": "/v1/product/list",
    "body": {
        "page": 1,
        "page_size": 1000,
        "filter": {
            "visibility": "VISIBLE"
        }
    }
}

Ответ:
{"code":7,"message":"Invalid Api-Key, please contact support","details":[]}

Некорректная обработка ответа печати маркировок

В методе packageLabel FbsService.php#L129 обработка идет так же как и для других методов - предполагая что в ответе JSON, но в ответе pdf файл https://cb-api.ozonru.me/apiref/ru/#t-fbs_package_label (тоже самое и для метода /v2/posting/fbs/act/get-pdf - https://cb-api.ozonru.me/apiref/ru/#t-section_postings_fbs_act_title).

Добавить функцию в сервис

Добрый день. Неплохо было бы добавить функцию tree - получения списка категорий от Озон
И она могла бы выглядеть так:

    /**
     * Receive the tree of categories for a specified category or full categories tree.
     *
     * @param array $categoryId [attribute_type, language]
     *
     * @return mixed|\Psr\Http\Message\ResponseInterface
     */
    public function tree(int $categoryId = 0, array $query = []): array
    {
        $query = ArrayHelper::pick($query, ['category_id', 'language']);
        $query = TypeCaster::castArr($query, [
            'category_id'    => 'int',
            'language'       => 'str',
        ]);
        if($categoryId > 0) {
            $query = array_merge([
                'category_id'    => $categoryId,
            ], $query);
        }
        $query = array_merge([
            'language'    => 'RU',
        ], $query);
        return $this->request('POST', "{$this->path}/tree", $query);
    }

при 0 d category_id выгружается все дерево

/v1/chat/list too slowly,can you help me

Chat list(/v1/chat/list ) has too much data and is pulled too slowly. Can you provide change time parameters. It takes one hour to pull a store, and many stores can't be pulled at all,can you help me

AbstractService::getExceptionClassByName() must be of the type string

Уже больше месяца, в лог иногда сыпется вот такая ошибка

Argument 1 passed to Gam6itko\OzonSeller\Service\AbstractService::getExceptionClassByName() must be of the type string, null given, called in /vendor/gam6itko/ozon-seller/src/Service/AbstractService.php

Насколько я понимаю, сервер озона не отвечает и вместо ответа null, хотя в функции ожидается строка.

primary_image в import и update

Поддержка Озона про /import сообщает:

Добавили в запрос параметр primary_image — ссылка на главное изображение товара. Если у вас одно изображение, то его не нужно будет указывать в параметре images, а только в primary_image

Но правила валидации product_validator_v2.php не позволяют опустить параметр images.

Не смотря на то, что в документации озона предлагается указывать главное изображение первым в списке images, мы столкнулись с ошибкам обработки фотографий на стороне Озона. Поэтому нужно явно задавать главное в primary_image

Ошибка при вызове метода V3\Posting\FbsService::unfulfilledList без указания фильтра

Версия библиотеки v0.8.7

Вызов \Gam6itko\OzonSeller\Service\V3\Posting\FbsService::unfulfilledList без параметров формирует следующий запрос (заголовки опущены для краткости):

POST /v3/posting/fbs/unfulfilled/list HTTP/1.1

{"with":{"analytics_data":false,"barcodes":false,"financial_data":false},"filter":[],"dir":"asc","offset":0,"limit":10}

Ответ:

HTTP/1.1 400 Bad Request

{"code":3,"message":"proto: syntax error (line 1:83): unexpected token [","details":[]}

Полагаю, проблема в том, что при преобразовании в JSON пустой массив преобразуется в [] вместо {}.

Похожая проблема была в #40, там это решили добавлением дефолтных значений для некоторых полей фильтра (чтобы он никогда не был пустым).

Некорректная обработка статусов ответа

Со вчера начали сыпаться эксепшены

Client error: POST `http://api-seller.ozon.ru/v3/posting/fbs/list` resulted in a `405 Method Not Allowed` response

В AbstractService идет проверка только содержимого контента, но в данном случае нужно проверять статус, тк боди пустое.

Соответственно на выходе получаем пустой эксепшен

Gam6itko\OzonSeller\Exception\OzonSellerException Object
(
    [details:protected] => Array
        (
        )

    [message:protected] => 
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => /var/www/vhosts/***/local/php_interface/vendor/gam6itko/ozon-seller/src/Service/AbstractService.php
    [line:protected] => 146
    [trace:Exception:private] => Array
        (
)

image

/V2/Posting/FbsService, an exception occurred, can you help me?

use V2\Posting\FbsService

$config = ['clientId' => $client_id, 'apiKey' => $api_key, 'host' => $api_url];
$svc = new FbsService($config, new GuzzleAdapter(new GuzzleClient()), new RequestFactory(), new StreamFactory());
$svc->ship($packages, $number_posting);

the exception like this:
proto: syntax error (line 1:13): unexpected token {

can you help me?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.