Оформление заказа
IMSHOP Retail Protocol (IRP) является объектом интеллектуальной собственности ООО «АЙ ЭМ СОЛЮШНЗ» (IMSHOP) и защищён как объект авторского права. Свидетельство о депонировании произведения № 023-014461 от 16 января 2023 г. подтверждает исключительные права ООО «АЙ ЭМ СОЛЮШНЗ» на данные технологии.
IMSHOP Retail Protocol создан по заказу ООО «АЙ ЭМ СОЛЮШНЗ». Использование IMSHOP Retail Protocol допустимо только при взаимодействии с ООО "АЙ ЭМ СОЛЮШНЗ" и наличии действующего лицензионного договора. Более подробно можно ознакомиться здесь.
Для подключения ендпоинта передачи заказа обратитесь к вашему менеджеру в IMSHOP.IO. Передайте менеджеру URL.
IMSHOP.IO передаёт состав корзины, полный адрес, идентификаторы выбранных способов оплаты и доставки, а также промокод и идентификатор пользователя, если они есть; в ответ IMSHOP.IO ожидает отбивку об удачно зарегистрированном заказе.
Запросы, исходящие от IMSHOP, могут включать цены каждой товарной позиции. Эти цены носят исключительно справочный характер и отображают последнюю цену из товарного фида. Настоятельно требуем не использовать эти цены при регистрации заказа в OMS. При регистрации заказа необходимо использовать полноценный механизм расчета корзины. Использование справочных цен из запроса может привести к регистрации заказа по устаревшей цене (если фид не обновлялся давно), и без применения акций / скидок (цена в фиде не учитывает и не может учитывать влияние акционных механик).
Ендпоинт оформления заказа обязан быть максимально толерантным ко входящим данным.
Местоположение пользователя, email, номер телефона, имя и пр. данные проходят валидацию на стороне IMSHOP.IO.
Есть вероятность, что проверки на корректность на вашей стороне предъявляют больше требований. Например, имя пользователя обязательно должно начинаться с большой буквы.
Следует помнить, что если в запросе присутствуют некорректные данные — их всегда можно уточнить на этапе подтверждения заказа по телефону.
Если заказ с некорректными данными не был принят — это уже потерянные деньги.
Формат запроса и пример
Пример
POST
https://api-imshop.store.ru/v1/orders
Описание формата
device
— информация об устройстве пользователяplatform
—ios
илиandroid
installId
— идентификатор установки приложенияhasPreorderItems
— в случае если в запросе товары с предзаказомearlyAccess
-если заказ с ранним доступомorders
— список заказов (за 1 запрос может выгружаться более 1 заказа)uuid
— идентификатор заказа на стороне IMSHOP.IOexternalUserId
— идентификатор покупателя на стороне клиента, если тот авторизован в мобильном приложении,null
по умолчаниюgroupId
— идентификатор группировки заказа (Если один заказ был разбит на несколько дочерних заказов, они будут иметь одинаковыйgroupId
)createdOn
— время создания заказаupdatedOn
— время изменения заказаstatus
— статус заказа в IMSHOP.IO. Возможные значения:placed
— созданprocessing
— в обработкеready_to_dispatch
— готов к отправкеdispatched
— отправлен в доставкуready_for_pickup
— готов к выдачеdelivered
— доставленclosed
— завершен без выкупаcanceled
— отмененdone
— выполнен. выкуплен.
name
— имя покупателяphone
— телефонemail
— электронная почтаanotherRecipientData
– данные получателя, если заказ был оформлен на другого человекаname
– имя получателяphone
– телефон получателя
country
— ISO код страны,RU
city
— стандартизированное имя города из системы ФИАС (или UUID ФИАС, в зависимости от настроек)address
— адрес в виде текстаaddressData
— подробные данные об адресе для доставки курьером, включая идентификаторы из КЛАДР и ФИАС, объект «Местоположение». Передается только при доставке до двери (курьером). При самовывозе / доставки до ПВЗ поле либо не передается, либо заполнено частично (например: только город).addressComponents
— данные об адресе доставки по полям как ввел пользователь. Передается только при доставке до двери (курьером). При самовывозе / доставки до ПВЗ поле либо не передается, либо заполнено частично (например: только город).authorizedBonuses
— запрос на списание баллов (если у клиента есть бонусная ПЛ)promocode
— прикрепленный промокод в виде строки.null
если промокод не был примененloyaltyCard
— идентификатор или номер карты лояльности (если есть, иначеnull
)delivery
— идентификатор способа доставки в формате<источник>/<идентификатор>
. Например:webhook/a1
для доставки с идентификаторомa1
, полученной из ендпоинта интеграции доставокdeliveryName
— название способа доставкиpickupLocationId
— идентификатор выбранного пункта самовывоза (ПВЗ, постамат или магазин, в зависимости отdelivery
). Только для заказов с самовывозом, доставкой до ПВЗ.pickupLoactionSnapshot
— снимок метадаты о пункте самовывоза на момент заказа (берется из API службы доставки)payment
— выбранный способ оплатыpaymentName
— название способа оплатыpaymentProcessed
— флаг того, что заказ оплаченpaymentId
— идентификатор платежаpaymentGateway
— использованный эквайрингexternalIds
— список идентификаторов этого же заказа в других системахdeliveryComment
— комментарий к заказуlegalEntity
– информация о юридическом лице, появляется, если заказ оформляется на юридическое лицоcontactPersonPosition
– должность контактного лицаlegalEntityName
– полное название юридического лицаtaxpayerIdentificationNumber
– ИННtaxRegistrationReasonCode
– КППbusinessAddress
– юридический адрес
items
— список товаров в корзинеid
— идентификатор товара в IMSHOP.IOconfigurationId
— идентификатор товарного предложения в системе клиентовprivateId
— идентификатор товарного предложения в системе клиентаname
— наименование,quantity
— количествоitemKitId
– id товарного набора, передается только если товар был добавлен из товарного набора
В полях заказа также может быть передана выбранная группа маркетинговых акций:
promoGroup
- (опционально) группа маркетинговых акций, выбранная покупателем. Поля каждой акции:id
- идентификатор акцииgifts
- список товаров, выбранных в качестве подарка. Если акция подразумевает только скидку, это поле не будет заполненоid
- идентификатор товарного предложенияquantity
- количество единиц товара
В полях заказа могут быть переданы идентификаторы даты/времени интервала доставки.
deliveryDateIntervalId
- (опционально) идентификатор, привязанный к датам, полученный в полеdateIntervals[<index>].id
ендпоинта доставокdeliveryTimeIntervalId
- (опционально) идентификатор, привязанный ко времени, полученный в полеdateIntervals[<index>].timeIntervals[<index>].id
ендпоинта доставок
extraServices
- дополнительные услуги, как реализовать *клик
Формат ответа и пример
Описание формата
orders
— cписок принятых / не принятых заказовsuccess
—true
илиfalse
(boolean
). флаг успеха.true
если заказ принятerrorCode
— код ошибки еслиsuccess
=false
errorMessage
— описание ошибки еслиsuccess
=false
id
— (строка) идентификатор созданного заказа в системе клиентаpublicId
— (строка) отображаемый публичный номер заказа (опционально, если не совпадает сid
)message
— (опционально) сообщение для клиента, отображаемое на странице "спасибо за заказ" после оформления заказаuuid
— (строка) идентификатор заказа в IMSHOP.IO, полученный в запросеprice
— (опционально, но обязательно, если возвращается больше одного заказа/группировка заказов) цена заказаdeliveryPrice
— (опционально) цена доставкиitems
— список товаров в корзине (опционально, но обязательно, если возвращается больше одного заказа)id
— идентификатор товара в IMSHOP.IOconfigurationId
— идентификатор товарного предложения в системе клиентаprivateId
— идентификатор товарного предложения в системе клиентаname
— наименованиеprice
— цена товара за 1 позициюquantity
— количествоdiscount
— скидка на всю позициюsubtotal
— итого за позицию (subtotal
= (price
*quantity
) -discount
)itemKitId
– id товарного набора, передается только если товар был добавлен из товарного набора
Пример ответа
Оформление заказов одним запросом для разделенной корзины (включается по запросу)
Оформление заказов одним запросом включается настройкой с помощью запроса продукт менеджеру, после этого заказы будут оформляться и отправляться в бекенд клиента одним запросом.
Нет отличия в структуре передаваемых данных от обычного оформления заказа кроме количества заказов в массиве orders передаваемом в запросе
Пример запроса
Пример ответа
в ответе бекенд клиента обязательно должен вернуть uuid каждого заказа, который был передан в запросе, это нужно для того, чтобы сопоставить заказы и они не перепутались при обработке
Last updated