Доставки

IMSHOP Retail Protocol (IRP) является объектом интеллектуальной собственности ООО «АЙ ЭМ СОЛЮШНЗ» (IMSHOP) и защищён как объект авторского права. Свидетельство о депонировании произведения № 023-014461 от 16 января 2023 г. подтверждает исключительные права ООО «АЙ ЭМ СОЛЮШНЗ» на данные технологии.

IMSHOP Retail Protocol создан по заказу ООО «АЙ ЭМ СОЛЮШНЗ». Использование IMSHOP Retail Protocol допустимо только при взаимодействии с ООО "АЙ ЭМ СОЛЮШНЗ" и наличии действующего лицензионного договора. Более подробно можно ознакомиться здесь.

Обратите внимание, что цены в 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