Автор Тема: необходимо создать API конектинг для магазина  (Прочитано 2740 раз)

11 Декабрь 2020, 17:45:34
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
необходимо создать API конектинг для магазина на PS 1.6.1.19 и маркетплейса wildberris 
вот часть описания

Особенности работы системы:
Все карточки товаров которые были созданы в API https://content-suppliers.wildberries.ru будут видны методом /card/list
Карточки созданные ранее в API https://specifications.wildberries.ru/, не будут отображаться на текущий момент.
Тестового окружения для поставщиков не предусмотрено. Все карточки сразу создаются в продуктовой среде. В случае ошибок, для исправления которых нет методов в API можно обращаться в службу поддержки с темой Заявка на API Content
Аутентификация
Процедура аутентификации по номеру телефона состоит из 3-х шагов:
Шаг 1.
Необходимо запросить у пользователя номер телефона, а так же согласие на правила использования. Затем отправить эти данные методом login_by_phone (POST /api/v2/auth/login_by_phone) в формате:
Пример запроса:
POST https://content-suppliers.wildberries.ru/passport/api/v2/auth/login_by_phone
Content-Type: application/json
{
  "phone": "79999999999",
  "is_terms_and_conditions_accepted": true
}
   
Ответ:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 01 Sep 2021 00:00:00 GMT
Content-Type: application/json
Content-Length: 149
Connection: keep-alive
Uber-Trace-Id: 0000000000000000:0000000000000000:0000000000000000:0
Strict-Transport-Security: max-age=31536000; preload;
X-Content-Type-Options: nosniff
{
  "token": "AfvYxgf6o8X1C7akxfULQprf2iFGASdb_s9tRzTzdYgTY6iYghxW7Cq4wJbsMBk6T_o9W3TBA2p_VbogrjSJfXAi3rD44ng",
  "till_next_request": 30000
}

Если формат данных корректен, то пользователю будет отправлена SMS/Push с кодом подтверждения владения номером. Помимо этого в ответе будет отправлен токен и время (в миллисекундах), в течение которого паспорт будет ожидать ввод кода подтверждения.

Шаг 2.
После ввода пользователем кода, пришедшего по SMS, он вместе с токеном должен быть передан методу login (POST /api/v2/auth/login)
Пример:
POST https://content-suppliers.wildberries.ru/passport/api/v2/auth/login
Content-Type: application/json
{
  "token": "AfvYxgf6o8X1C7akxfULQprf2iFGASdb_s9tRzTzdYgTY6iYghxW7Cq4wJbsMBk6T_o9W3TBA2p_VbogrjSJfXAi3rD44ng",
  "options":{
    "notify_code": "680014"
  }
}
   
В ответ, если аутентификация прошла успешно, будет установлен secure httpOnly cookie WBToken с сессией пользователя.
WBToken AvvYxgfM6bv1C8yMwfULQqIylUTql5Zm3kndf2i8Z-7knuI6SD6o6onmUn4_KY2mx3ZW3ZZjnQ10QZ0vQ3TTLAue-keC
Шаг 3.
Для того чтобы не запрашивать каждый раз аутентификацию с помощью смс, можно запросить токен аутентификации. Для этого нужно отправить фоновый POST запрос по адресу /api/v2/auth/grant.
POST https://content-suppliers.wildberries.ru/passport/api/v2/auth/grant
Content-Type: application/json
Cookie: WBToken=AvvYxgfM6bv1C8yMwfULQqIylUTql5Zm3kndf2i8Z-7knuI6SD6o6onmUn4_KY2mx3ZW3ZZjnQ10QZ0vQ3TTLAue-keC

Пример ответа :
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 01 Sep 2021 00:00:00 GMT
Content-Type: application/json
Content-Length: 123
Connection: keep-alive
Uber-Trace-Id: 0000000000000000:0000000000000000:0000000000000000:0
Strict-Transport-Security: max-age=31536000; preload;
X-Content-Type-Options: nosniff
{
  "token": "APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ"
}
     

   
В ответ будет получен токен в формате APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ

Полученный токен необходимо отправить в центральную инсталяцию паспорта. Для этого нужно произвести фоновый POST запрос на https://content-suppliers.wildberries.ru/passport/api/v2/auth/login в формате:
POST https://content-suppliers.wildberries.ru/passport/api/v2/auth/login
Content-Type: application/json
Cookie: WBToken=AvvYxgfM6bv1C8yMwfULQqIylUTql5Zm3kndf2i8Z-7knuI6SD6o6onmUn4_KY2mx3ZW3ZZjnQ10QZ0vQ3TTLAue-keC
{
  "country": "RU",
  "device": "MacBookPro16",
  "token": "APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ"
}
     
На этом передачу знания об аутентификации можно считать успешно завершённой. Теперь с токеном аутентификации можно запрашивать обновление cookies:
Пример:
POST https://content-suppliers.wildberries.ru/passport/api/v2/auth/login
Content-Type: application/json
{
  "token": "APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ"
}
     
Описание процесса создания карточки товара
Данное API предназначено для работы по схеме “Со склада поставщика”.
Для работы с запросами требуется пройти аутентификацию пользователя.

Создание карточки/карточек товаров.
Для создания карточек существует 2 метода:

Create.
https://content-suppliers.wildberries.ru/card/create
Описание: метод позволяет создать одну новую карточку товара. Возвращает созданную карточку.
Тело запроса выглядит следующим образом:
{
    "id": 1, // ID запроса для сопоставления ответа отправленному запросу, необходимы уникальные идентификаторы.
              // Для каждого запроса, рекомендуется избегать простых идентификаторов, таких как 1, 2, 3 и т.д.
    "jsonrpc": "2.0", // Версия протокола. Всегда должна быть "2.0".

    "params": { // Параметры.
      "card": {
        "countryProduction": "string", // Страна проиводитель.
        "object": "string" // Категория товара (Jeans, Books и другие).
        "addin": [ // Структура, содержащая характеристики карточки, общие для всех номенклатур и размеров.
          {
            "type": "string", // Название характеристики. Пример: "Composition".
            "params": [ // Массив значений характеристики. Пример для 1 эл-та: "{"type": "Brand", "params": [{"value": "brandName"}]}".
              {
                "count": 0, // Численное значение характеристики.
                "units": "string", // Единицы измерения характеристики ("см", "%" и другие).
                "value": "string" // Текстовое значение характеристики ("brandName").
              }
            ]
          }
        ],
        "nomenclatures": [ // Массив номенклатур товара.
          {
            "vendorCode": "string", // Артикул товара.
            "variations": [ // Массив вариаций товара. Одна цена - одна вариация.
              {
                "barcode": "string", // Штрихкод товара.
                "addin": [ // Структура, содержащая характеристики конкретной вариации товара.
                  {
                    "type": "string", // Название характеристики.
                    // Массив значений хар-ки. Пример: "{"type": "Size", "params": [{"value": "S"}]}".
                    "params": [  // У хар-ик, содержащих одно значение, массив будет содержать только 1 элемент.
                        {
                          "count": 0, // Численное значение характеристики.
                          "units": "string", // Единицы измерения характеристики.
                          "value": "string" // Текстовое значение характеристики.
                        }
                      ]
                    }
                  ]
                }
              ],
              "addin": [ // Структура, содержащая характеристики конкретной номенклатуры.
                {
                  "type": "string", // Название характеристики.
                  // Массив значений характеристики. Пример: "{"type": "Color", "params": [{"value": "Красный"}]}".
                  "params": [ // У хар-ик, содержащих одно значение массив будет содержать только 1 элемент.
                    {
                      "count": 0, // Численное значение характеристики.
                      "units": "string", // Единицы измерения характеристики.
                      "value": "string" // Текстовое значение характеристики.
                    }
                  ]
                }
                ]
              }
            ]
        },
      "supplierID": "00000000-0000-0000-0000-000000000000" // Идентификатор поставщика. Выдаётся при регистрации поставщика.
    }
}
     
Пример запроса:
POST https://content-suppliers.wildberries.ru/card/create
Content-Type: application/json
Cookie: WBToken={{cookie}}
     
ADDIN
Addin - структура, хранящая в себе характеристики товаров, которые могут различаться у разных категорий товаров. Она состоит из следующих полей:
  "type" - название характеристики товара
  "params" - массив значений характеристики
       
params, в свою очередь, содержит следующие поля для более удобного хранения характеристик:
  "value" - текстовое значение характеристики
  "count" - числовое значение характеристики
  "units" - единицы измерения характеристики
 
Все характеристики для определённой категории товаров можно получить, совершив следующий запрос:
GET https://content-suppliers.wildberries.ru/ns/characteristics-configurator-api/content-configurator/api/v1/config/get/object/translated?name=Кроссовки&lang=ru
В результате в формате json вернётся список характеристик данной категории товаров (в примере используется категория Кроссовки) и требования к ним. Получение списка возможных категорий товаров будет описано ниже в пункте "Поиск ключа объекта". Некоторые характеристики требуется заполнять из словарных значений. Для получения списка возможных значений характеристик используется следующий запрос:

GET https://content-suppliers.wildberries.ru/ns/characteristics-configurator-api/content-configurator/api/v1/directory/brands?pattern=nike&lang=ru&top=50
В данном запросе имеется 3 параметра:
pattern позволяет указать шаблон для поиска значения характеристики;
lang - обязательный параметр, на данный момент используется только ru;
top - ограничение по количеству объектов, если не указано - 10 шт.
Получение карточки/карточек.
Для получения карточек существует 2 метода:

CardByID. https://content-suppliers.wildberries.ru/card/cardById
Описание: метод позволяет получить карточку поставщика с указанным ID.
Тело запроса выглядит следующим образом:
{
  "id": 1,
  "jsonrpc": "2.0",
  "params": {
    "cardID": "00000000-0000-0000-0000-000000000000", // ID карточки. Можно получить в ответе сервиса после создания карточки или методом "List", который рассмотрен ниже.
    "supplierID": "00000000-0000-0000-0000-000000000000" // ID поставщика. Выдаётся при регистрации поставщика.
  }
}

List. https://content-suppliers.wildberries.ru/card/list
Описание: метод позволяет получить список карточек поставщика по указанным параметрам. Фильтрация позволяет исключить из итогового списка карточек те, в которых указанное поле column содержит значение excludedValues. Поиск позволяет оставить в итоговом списке карточек только те, у которых поле column имеет значение search, если это число, если это строка, то значение поля начинается с search. Сортировка позволяет отсортировать список по полю column в порядке order. query содержит значения limit и offset, который указывают соответственно на макисмальное количество карточек, которые надо вывести и на количество карточек, которые с самого начала списка нужно пропустить.
Наименования полей соответствуют пути до этого поля через точку. Так, например, чтобы добраться до поля barcode, понадобится путь nomenclatures.variations.barcode. Исключения - параметры, лежащие внутри структуры addin. Чтобы добраться до них, требуется в пути после addin через точку указать type этого параметра. Например, чтобы получить brand, потребуется путь addin.Brand. Brand написан с большой буквы, так как type был написан тоже с большой.
18 Февраль 2021, 08:54:52
Ответ #1
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
18 Февраль 2021, 12:17:57
Ответ #2
  • Старожил
  • ****
  • Сообщений: 274
  • Репутация: +3/-0
    • Просмотр профиля
https://infostart.ru/public/1364947/
Если используете 1С, тогда можно через нее интегрировать.