Доставки

Мы работаем только через POST-запросы

Обратите внимание, что цены в webhook доставки не передаются. При необходимости подсчетов ориентируйтесь на ваши идентификаторы товара.

IMSHOP.IO передаёт состав корзины, город (и страну), а также промокод и идентификатор пользователя, если они есть, в ответ IMSHOP.IO ожидает список доступных способов доставки.

Этот запрос отправляется не только в тех случаях, когда список доставок нужно вывести пользователю. Список доставок также нужен (повторно) перед финальным запросом оформления заказа.

Формат запроса и пример

Пример

POSThttps://api-imshop.store.ru/v1/deliveries

{
          "staffId": "XXXXXXX",
          "address": "ул Петергофское, д 57, кв 106",
          "position": "deliveryWidget",
          "city": "Санкт-Петербург",
          "installId": "f4f0b9cb-fc44-49d5-8cfc-ff80a19e702d",
          "country": "RU",
          "skipPickupLocations": true,
          "bonusesSpent": 0,
          "addressData": {
            "kladr": "78000000000104600",
            "apt": "106",
            "houseKladr": null,
            "region": "Санкт-Петербург",
            "fias": "146a0f57-9307-4805-8605-8189fa8510e7",
            "value": "г Санкт-Петербург, Петергофское шоссе, д 57, кв 106",
            "cityFias": "c2deb16a-0330-4f05-821f-1d09c93331e6",
            "building": null,
            "areaFias": null,
            "streetKladr": "78000000000104600",
            "regionKladr": "7800000000000",
            "regionFias": "c2deb16a-0330-4f05-821f-1d09c93331e6",
            "city_kladr": "7800000000000",
            "streetFias": "146a0f57-9307-4805-8605-8189fa8510e7",
            "zip": "198206",
            "settlement": null,
            "fiasCode": "7800000000000001046",
            "settlementFias": null,
            "beltwayDistance": null,
            "lat": "59.848552",
            "settlementKladr": null,
            "house": "57",
            "city": "Санкт-Петербург",
            "cityKladr": "7800000000000",
            "houseFias": null,
            "beltwayHit": "IN_KAD",
            "area": null,
            "fias_code": "7800000000000001046",
            "street": "Петергофское",
            "areaKladr": null,
            "lon": "30.136178",
            "settlementWithType": null,
            "fias_id": "146a0f57-9307-4805-8605-8189fa8510e7"
          },
          "outletId": "XXXXXXX",
          "externalUserId": null,
          "items": [
            {
              "discount": 0,
              "quantity": 1,
              "price": 190,
              "name": "НазваниеТовара",
              "subtotal": 190,
              "configurationId": "216213",
              "privateId": "216213",
              "id": "216222"
            }
          ],
          "userData": null,
          "selectedPromo": null
        }

Описание формата

  • outletId — идентификатор магазина

  • staffId — идентификатор сотрудника

  • address — адрес магазина

  • city — город

  • installId — идентификатор установки приложения на устройстве (из системы imshop)

  • externalUserId — идентификатор покупателя на стороне клиента, если тот авторизован в мобильном приложении, null по умолчанию

  • country — ISO код страны, RU

  • bonusesSpent - списанные бонусы

  • position — источник вызова хука, (checkout, deliveryWidget), можно использовать для определения где вызван хук и передавать в карточку товара уменьшенную выборку или отсортировав по другому

  • skipPickupLocations — если этот параметр передан, и он равен true, то в ответе достаточно передать только способ самовывоза, и не передавать все доступные точки получения заказа

  • items - список товаров в корзине

    • id — идентификатор товара в IMSHOP.IO

    • configurationId — идентификатор товарного предложения в системе клиента (идентификатор из фида)

    • privateId — идентификатор товара в системе клиента (group_id из фида)

    • quantity — количество

    • price — изначальная цена товара

    • discount — скидка, если есть. по умолчанию 0

    • name — название товара

    • subtotal — итоговая стоимость с учетом скидок

  • addressData — полная информация о адресе, прошедшая валидацию DaData

    Формат ответа и пример

    Если в ответе не будут отданы ВСЕ обязательные поля - в приложении не отобразятся доставки

Пример ответа:

{
          "deliveries": [
            {
              "price": 190,
              "description": "Вы можете забрать свой заказ в постамате или пункте выдаче заказов",
              "locations": [
                {
                  "lon": "31.2884",
                  "min": 3,
                  "subway": "",
                  "time": "примерка\r\n\r\nПн-Пт 10:00-19:00",
                  "timeLabel": "",
                  "id": "191921",
                  "city": "Великий Новгород",
                  "mall": "",
                  "lat": "58.5213",
                  "title": "Пункт выдачи Boxberry",
                  "price": 190,
                  "address": "173000, Великий Новгород г, Большая Московская ул, д.11/11"
                },
                {
                  "mall": "",
                  "lon": "31.2943",
                  "subway": "",
                  "title": "Пункт выдачи Boxberry",
                  "time": "частичный выкуп\r\n\r\nПн-Вс 09:00-22:00",
                  "min": 3,
                  "lat": "58.5286",
                  "id": "210600",
                  "timeLabel": "",
                  "price": 190,
                  "address": "173004, Великий Новгород г, Большая Московская ул, д.64/11",
                  "city": "Великий Новгород"
                }
              ],
              "type": "pickup",
              "title": "Забрать в пункте выдачи",
              "timeLabel": "1-2 дней",
              "min": 1,
              "max": 2,
              "id": "pickup_point"
            },
            {
              "timeLabel": "4 дня",
              "description": "Доставка курьерской службой",
              "dateIntervals": [],
              "price": 190,
              "type": "delivery",
              "id": "courier",
              "title": "Курьерская доставка",
              "min": 4,
              "max": 4
            }
          ]
        }

Описание формата

  • deliveries — список доступных способов доставки, массив

    • id — идентификатор, строка (обязательное поле)

    • title — название, строка (обязательное поле)

    • description — описание, строка

    • type — тип (delivery, pickup — доставка или самовывоз) (обязательное поле)

    • hasPickupLocations — способ доставки требует выбора пункта самовывоза (особенно важно при ответе на запросы со skipPickupLocations = true)

    • price — минимальная цена, цифра (обязательное поле)

    • priceLabel — цена в свободной форме; строка; приоритетнее поля price

    • min — минимальный срок доставки (0 - сегодня, 1 - завтра, 2-послезавтра, 3- от 3 дней) (обязательное поле)

    • max — максимальный срок доставки (0 - сегодня, 1 - завтра итд)

    • timeLabel — время доставки в виде текста (отображается на экране выбора способа доставки)

    • locations — список ПВЗ (если type = pickup и требуется выбор пункта самовывоза, и в запросе не передан skipPickupLocations = true)

      • id — идентификатор самовывоза, строка (обязательное поле)

      • title — название, строка (обязательное поле)

      • address — адрес, строка (обязательное поле)

      • city — город, строка (обязательное поле)

      • time — расписание / время работы, строка

      • subway — ближайшая станция метро, строка

      • mall — название ТЦ, если не указывается в поле title

      • lat — широта для отображения на карте, строка (обязательное поле)

      • lon — долгота для отображения на карте, строка (обязательное поле)

      • price — цена доставки в этот ПВЗ, цифра (обязательное поле)

      • min — ожидаемое время доставки (0 - сегодня), цифра (обязательное поле)

      • timeLabel — время доставки в виде текста (отображается на экране выбора пункта получения заказа и на экране описания пункта самовывоза), строка

    • groupName — (опционально) идентификатор для группировки, строка (способы доставки, у которых значение группы совпадает, схлопываются в один пункт; после его выбора, пользователь увидит все пункты, входящие в эту группу)

Last updated