Closed squid46 closed 4 years ago
Здравствуйте!
Примеры из документации предназначены для демонстрации принципа работы с библиотекой. Параметр site
требуется для некоторых запросов если API-ключ предоставляет доступ к нескольким магазинам. В site
указывается код магазина, для которого выполняется запрос. Например, при создании заказа он появится в указанном в site
магазине.
Также рекомендуем ознакомиться с документацией к API retailCRM. В случае возникновения проблем или затруднений вы всегда можете обратиться в техподдержку.
Здравствуйте. В том и дело, что в /api/v5/orders
site
не нужен. Поэтому и смутило.
Да уж... А из "Грастин" я получаю только номер заказа и никаких сайтов. Можно пример на редактирование ордера? /api/v5/orders/{externalId}/edit
Одни ошибки
$response = $client->request->ordersEdit(array('number' => '55555', 'status' => 'dostavaka'), 'id', 'example-com');
Спасибо.
Параметр site используется в том случае, если в системе заведено несколько сайтов и ключ API один на всех, поэтому использование такого параметра более чем логично.
$response = $client->request->ordersEdit(array('number' => '55555', 'status' => 'dostavaka'), 'id', 'example-com');
это корректный формат, но в данном примере у Вас нет указания идентификатора заказа, если исходить из того, что второй параметр Вы указали 'id', то надо использовать идентификатор заказа из retailcrm, т.е. примерно так:
$response = $client->request->ordersEdit(array('id' => 123, 'number' => '55555', 'status' => 'dostavaka'), 'id', 'example-com');
Вот снова столкнулся - ну нельзя знать какой сайт из стороннего источника. И приходиться везде использовать эту библиотеку, а заказ запрашивать через file_get_contents
Параметр site
при запросе конкретного заказа нужен если вы запрашиваете заказ по externalId
т.к. уникальность externalId
соблюдается в рамках магазина. Иными словами, в системе могут существовать два разных заказа с одинаковыми externalId
, но только если они находятся в разных магазинах. А в пределах магазина externalId
повторяться не должен. Поэтому без указания кода магазина (site
) система просто не будет знать где искать запрашиваемый вами заказ.
Если вы хотите получать заказ по ID, то укажите в параметре $by
метода ordersGet
значение id
. Если же вам вообще не нужна работа с несколькими магазинами, и вы хотите работать с одним конкретным, то выберите только его в настройках API-ключа.
Всё, что вы говорите, понятно. Только по API при вызова метода orders этот параметр не обязателен. Написали бы и в библиотеке: есть сайт - фильтруем, а нету - ищем всё. А так он обязателен и без него ошибка.
Метод ordersList
не требует передачу site
.
За получение заказа отвечает метод ordersGet
, сигнатура метода не требует обязательной передачи site
. Необходимость передачи site
зависит от данных на стороне retailCRM, что я описал в предыдущем комментарии. https://github.com/retailcrm/api-client-php/issues/84#issuecomment-666450609
Это вообще рабочая библиотека? Первый же пример из документации вызывает ошибку "Parameter 'site' is missing".