Изменение статуса заказа

Общая информация

Терминология

  • Узел - конечный URL, к которому отправляются запросы. Например - https://service.leadhit.ru/api/v1/orders/.
  • Методы - методы, которые принимают узлы, являются обычными питоновскими функциями.

API

API располагается по адресу https://service.leadhit.ru/api/v1/

  • Основной протокол - JSON-RPC 2.0
  • Content-type - application/json

Карта методов

У каждого узла API есть специальная страница - карта методов. На этой странице можно увидеть все существующие методы данного узла, а также дополнительную информацию о них.

Ее можно найти, если выполнить GET-запрос (или зайти через браузер), добавив к интересующему вас URL узла в конце /map.

Пример карты методов:

https://service.leadhit.ru/api/v1/orders/map

Авторизация

Чтобы пользоваться API, сначала необходимо получить API key. Обратитесь к своему менеджеру за ним.

После того, как вы получили ключ, вам необходимо передать его в заголовке POST-запроса к API. Он должен иметь название API-KEY (или api-key).

В случае, если API не получило авторизационный ключ в заголовке, вы получите ответ 403.

Базовый запрос

Общение с API происходит по протоколу JSON-RPC 2.0, через POST-запросы.
Content-type должен быть application/json.
Не забывайте об авторизации (заголовок API-KEY).

Помимо этого, каждый запрос к API должен содержать в себе три обязательных параметра - метод, версия JSON-RPC, id запроса. JSON-RPC всегда равен 2.0, а id может быть любым, такой же id вернется в ответе на запрос:

"method": "example_method"
"jsonrpc": "2.0"
"id": 0

Помимо обязательных параметров, методы принимают аргументы, котороые передаются через "params".
Могут быть либо списком, либо словарем.

В качестве примера - метод set_order_status.

Запрос:

{
  "method": "set_order_status",
  "params": {
    "order_id": "f168148717",
    "status": "paid"
  }, 
  "jsonrpc": "2.0"
  "id": 0
}

Ответ:

{
  "jsonrpc": "2.0",
  "result": {
    "status": "ok",
    "message": "Order status changed"
  },
  "id": 0
}

Ошибки

В случае, если вы не авторизованы, сервер вернет статус 403.
Если вы ошиблись в параметре, или произошла какая-то другая ошибка, сервер вернет статус 200, а в теле ответа будет содержаться ключ error, в котором описана причина ошибки.

{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "message": "Server error",
    "code": -32000,
    "data": {
      "message": "Possible statuses: paid, submitted",
      "args": [
        "Possible statuses: paid, submitted"
      ],
      "type": "ValidationError"
    }
  }
}

Заказы

URL: https://service.leadhit.ru/api/v1/orders

В этом разделе описаны основные методы работы с API заказов.

Существующие методы:

  • set_order_status - позволяет установить статус заказу по его id.
    • Параметры: order_id, status
      • order_id - строка, id заказа в вашем магазине.
      • status - строка, может иметь значения: "submitted", "paid", "delivered", "cancelled".

После получения нами заказа, ему выставляется статус "submitted" - оформлен.

Пример JSON:

{
  "method": "set_order_status",
  "params": {"order_id": "f168148717", "status": "paid"},
  "jsonrpc": "2.0",
  "id": 0
}

Curl:

$ curl -i \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "API-KEY: 4f8425fc77796b0266000009:TKW0i5FP5vkIrgMlnpoZbfOEagA" \
    -X POST -d '{"method":"set_order_status","params":{"order_id":"f168148717","status":"paid"},"jsonrpc":"2.0","id":0}' \
    https://service.leadhit.ru/api/v1/orders/

>>> {"jsonrpc": "2.0", "result": {"status": "ok", "order_status": "paid"}, "id": 0}