Оформление заказа
Last updated
Last updated
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.IO
externalUserId
— идентификатор покупателя на стороне клиента, если тот авторизован в мобильном приложении, 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.IO
configurationId
— идентификатор товарного предложения в системе клиентов
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.IO
configurationId
— идентификатор товарного предложения в системе клиента
privateId
— идентификатор товарного предложения в системе клиента
name
— наименование
price
— цена товара за 1 позицию
quantity
— количество
discount
— скидка на всю позицию
subtotal
— итого за позицию (subtotal
= (price
* quantity
) - discount
)
itemKitId
– id товарного набора, передается только если товар был добавлен из товарного набора
Оформление заказов одним запросом включается настройкой с помощью запроса продукт менеджеру, после этого заказы будут оформляться и отправляться в бекенд клиента одним запросом.
Нет отличия в структуре передаваемых данных от обычного оформления заказа кроме количества заказов в массиве orders передаваемом в запросе
в ответе бекенд клиента обязательно должен вернуть uuid каждого заказа, который был передан в запросе, это нужно для того, чтобы сопоставить заказы и они не перепутались при обработке