Denis0707
@Denis0707
Дымный о_0

/card​/list в WB API?

Всем привет! Мучаюсь и не могу понять в чем ошибка уже более недели, прошу подскажите кто знает.. В API WB имеется метод /card​/list (Получить список карточек поставщика с фильтром и сортировкой). Мне по сути необходимо получить одну карточку данным методом. Получить ее нужно по номенклатурному номеру (nmId), он у меня 81923101. Кто может пример привести, как это делается? Пишу на PHP. Вот ссылка на их документацию. https://suppliers-api.wildberries.ru/swagger/index...
  • Вопрос задан
  • 1833 просмотра
Пригласить эксперта
Ответы на вопрос 4
Denis0707
@Denis0707 Автор вопроса
Дымный о_0
На 1С пишут тут, но я не понял..
https://infostart.ru/public/1664291/
Ответ написан
Комментировать
Adamos
@Adamos
Мучаюсь и не могу понять в чем ошибка уже более недели

Предлагаете теперь нам помучиться и поугадывать, в чем у вас ошибка?
private function curl($url, $params = [])
    {
        $curl = curl_init();
        $headers = [
            'accept: application/json',
            'Authorization: ' . $this->tokenV2
        ];
        if(count($params)) {
            $headers[] = 'Content-Type: application/json';
            curl_setopt($curl, CURLOPT_POST, true );
            curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($params));    
        }
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($curl, CURLOPT_TIMEOUT, 300);

        $response = curl_exec($curl);
        $curlInfo = curl_getinfo($curl);

        $responseBodyRaw = substr($response, $curlInfo['header_size']);
        $responseBody = json_decode($responseBodyRaw, true);
        if(json_last_error() !== JSON_ERROR_NONE) {
            $responseBody = $responseBodyRaw;
        }
        unset($response, $responseBodyRaw);
        curl_close($curl);

        return $responseBody;
    }

    private function queryV25($url, $params)
    {
        return $this->curl($this->urlV2 . $url, $params);
    }

    public function getCards()
    {
        return $this->queryV25(
            'card/list',
            [
                'id' => 1,
                'jsonrpc' => '2.0',
                'params' => [
                    'query' => [
                        'limit' => 1000,
                        'offset' => 0,
                        'total' => 0
                    ],
                    'supplierID' => $this->supplierId
                ]
            ]
        );
    }

Этот код - работает. Для вашей задачи нужно в запрос добавить фильтр.
Ответ написан
Комментировать
@progTime
На все запросы с к нестатистическим методам возвращает ответ proxy: invalid token. Сто способов отправить запрос использовал уже. Ваш код такой же ответ. Ключ для хедера генерировал несколько раз. Но думаю дело все-таки в токене для хедера авторизации. Не сталкивались с такой ошибкой? В чем может быть проблема.
Ответ написан
Комментировать
указывайте все параметры в body
вписывайте свой токен и пробуйте
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://suppliers-api.wildberries.ru/content/v1/cards/list',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
  "sort": {
    "limit": 1,
    "offset": 50,
    "searchValue": "",
    "sortColumn": "updateAt",
    "ascending": false
  }
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization:  тут ваш токен',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы