Загрузка событий Ecomm
С помощью S2S API вы можете передать Ecomm события, совершённые вне сайта.
Например, изменение статуса заказа в системе учёта, в административной панели сайта
или оформленный через CRM-систему платёж.
Также через S2S API можно передавать данные по заказам в приложениях iOS и Android.
Подробнее о передаче событий на сайте см. раздел Ecommerce
Методы
Для загрузки событий Ecommerce на сервер MyTracker используйте следующие методы:
order
для передачи одного события;
orderBatch
для передачи сразу нескольких событий.
Все загруженные данные будут включены в общую статистику и появятся в интерфейсе MyTracker в течение 4 часов.
order
Формат запроса: https://tracker-s2s.my.com/v1/order/?idApp=XXX
Обязательные параметры: параметры события ,
параметры товара , а также
идентификатор пользователя и/или устройства, к которым будет привязано событие:
Для сайтов: customUserId
и/или lvid
Для мобильных приложений: customUserId
и/или instanceId
, gaid
,
appSetId
, androidId
, idfa
, iosVendorId
orderBatch
Формат запроса: https://tracker-s2s.my.com/v1/orderBatch/?idApp=XXX
Обязательные параметры:
Название параметра
Описание
Тип
Пример
Один параметр без названия.
Это массив, через который передают параметры из метода order
.
Если хотя бы в одном наборе параметров нарушены правила валидации,
сервер вернет ошибку
Массив. Максимальный размер 20
[
{"order_id": "000919", "status":"ADD",
"items":[{"item_id": "00912", "item_name":"Apple", "quantity": "6"}]},
{"order_id": "000930", "status":"PAY",
"items":[{"item_id": "00912", "item_name":"Apple", "quantity": "6"}]}
]
Параметры
Все параметры передаются в теле POST запроса в формате json.
Ограничение на максимальный размер загружаемых данных — 10Кб.
Параметры события
Название параметра
Описание
Тип
Пример
order_id*
Уникальный номер заказа
Строка
"order_id":"000919"
status
Действие по заказу:
ADD (добавление товара)
PAY (оплата товара, значение по умолчанию)
CANCEL (удаление неоплаченного товара)
REFUND (возврат оплаченного товара)
ADD и PAY соответствуют событию
mt_order в dataLayer.
CANCEL и REFUND соответствуют событию
mt_refund в dataLayer.
Строка
"status":"PAY"
currency_code
Трёхбуквенный код валюты по ISO 4217.
Если значение не передано,
то подставляется валюта проекта
Строка
"currency_code":"USD"
action_id
Уникальный номер действия (события) в рамках заказа
Строка
"action_id":"119029"
action_ts
Время события на сервере клиента (timestamp)
Строка
"action_ts":"1577191920"
coupon
Название или код купона на заказ
Строка
"coupon":"two-for-one"
items*
Массив с описанием товаров
Массив
[
{"item_id": "00912", "item_name":"Apple", "quantity": "6"},
{"item_id": "00920", "item_name":"Apple", "quantity": "4"}
]
* — обязательные параметры
Параметры товара
Параметр
Описание
Тип
Пример
item_id*
Уникальный идентификатор товара
Строка
"item_id":"00912"
item_name*
Название товара. Может быть не уникальным и меняться.
Строка
"item_name":"Apple"
affiliation
Поставщик или магазин, к которому относится товар
Строка
"affiliation":"Gardens"
price
Цена товара, без учёта скидок
Число
"price":"11.90"
discount
Сумма скидки на товар
Число
"discount":"2"
coupon
Название или код купона на товар
Строка
"coupon":"two-for-one"
tax
НДС и другие налоговые издержки. Значение от 1 до 100, в процентах.
Число
"tax":"20"
index
Позиция товара в списке
Целое число
"index":"1"
item_brand
Бренд товара
Строка
"item_brand":"Honey Crisp"
item_variant
Разновидность товара
Строка
"item_variant":"Green"
item_list_id
Идентификатор списка, в котором товар представлен пользователю
Строка
"item_list_id":"5"
item_list_name
Название списка, в котором товар представлен пользователю
Строка
"item_list_name":"Fruits"
item_category1
Одна из категорий, к которой относится товар
Строка
"item_category1":"Foodstuffs"
item_category2
Одна из категорий, к которой относится товар
Строка
"item_category2":"Fruits"
item_category3
Одна из категорий, к которой относится товар
Строка
"item_category3":"Apples"
item_category4
Одна из категорий, к которой относится товар
Строка
"item_category4":"Sweet"
location_id
Идентификатор или название местоположение товара,
магазина, пункта выдачи и др.
Строка
"location_id":"Oregon"
quantity
Количество единиц товара
Целое число
"quantity":"3"
* — обязательные параметры
Параметры S2S API
Название параметра
Описание
Тип
Пример
Общие
eventTimestamp
Время события
Число, минимальное 946674000, максимальное значение 4294967295.
По умолчанию берётся timestamp получения события
"eventTimestamp":"1577191920"
customUserId
Идентификатор пользователя
Строка, максимальный размер 1024
"customUserId":"1234"
ipv4
ipv4-адрес
Строка, максимальный размер 15
"ipv4":"125.125.125.125"
ipv6
ipv6-адрес
Строка, максимальный размер 45
"ipv6":"2001:0db8:85a3:0000:0000:8a2e:0370:7334"
idGender
Пол
Число, возможные варианты:
0 — неизвестно 1 — мужчина 2 — женщина
"idGender":"1"
age
Возраст
Число, максимальное значение 128
"age":"38"
connectionType
Тип соединения
Число, возможные варианты:
0 — неизвестно 1 — мобильная 2 — wi-fi
По умолчанию 0
"connectionType":"1"
bluetoothEnabled
Bluetooth
Число, возможные варианты:
0 — неизвестно 1 — включён 2 — выключен
По умолчанию 0
"bluetoothEnabled":"2"
Для мобильных приложений
instanceId
S2S идентификатор устройства
Строка, кол-во символов 36
"instanceId":"00000000-0000-0000-0000-000000000000"
adTrackingEnabled
Разрешение отслеживания
Число, возможные варианты:
1 — включено 0 — выключено
По умолчанию 1
"adTrackingEnabled":"0"
iOS
idfa
Рекламный идентификатор iOS
Строка, кол-во символов 36
"idfa":"00000000-0000-0000-0000-000000000000"
iosVendorId
Идентификатор производителя IOS
Строка, кол-во символов 36
"iosVendorId":"00000000-0000-0000-0000-000000000000"
Android
gaid
Рекламный идентификатор Android (advertisingId)
Строка, кол-во символов 36
"gaid":"00000000-0000-0000-0000-000000000000"
appSetId
Идентификатор Android,
уникальный в рамках аккаунта разработчика Google Play
Строка, кол-во символов 36
"appSetId":"00000000-0000-0000-0000-000000000000"
androidId
Идентификатор Android
Строка, кол-во символов 16
"androidId":"000000000000000"
Для сайтов
lvid
S2S идентификатор устройства
Строка, кол-во символов 32
"lvid":"00000000000000000000000000000000"
adBlocker
Блокировщик рекламы
Число, возможные варианты:
По умолчанию 0
"adBlocker":"0"
userAgent
User-Agent
Строка, максимальный размер 2048
"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"
Примеры запроса
Рассмотрим примеры передачи различных событий:
Событие
Параметры
Оформление заказа с оплатой
"status": "PAY"
Отправлять событие нужно в тот момент,
когда пользователь полностью оплатил заказ на сайте
и завершил оформление.
Оформление заказа без оплаты
"status": "ADD"
Отправлять событие нужно в тот момент,
когда пользователь завершил оформление
заказа с отложенной оплатой, например,
в пункте выдачи заказов или курьеру.
Полная или частичная оплата заказа
Оплата заказа подразумевает,
что перед этим уже было отправлено событие в статусе ADD.
Возможная цепочка действий: ADD→PAY.
"status": "PAY"
"order_id": "номер оформленного ранее заказа "
"items": "описание оплаченных товаров "
Отправлять событие нужно в момент оплаты.
Дополнение заказа
Дополнение заказа подразумевает,
что перед этим уже было отправлено событие с тем же order_id
.
Возможные цепочки действий: ADD→ADD, ADD→PAY, PAY→ADD, PAY→PAY.
"status": "PAY" если товары оплачены
"status": "ADD" если товары не оплачены
"order_id": "номер оформленного ранее заказа "
"items": "описание добавленных товаров "
Отправлять событие нужно в момент добавления товаров.
Полная или частичная отмена неоплаченного заказа
Отмена заказа подразумевает,
что перед этим уже было отправлено событие с тем же order_id
.
Возможные цепочки действий: ADD→CANCEL, PAY→CANCEL.
"status": "CANCEL"
"order_id": "номер оформленного ранее заказа "
"items": "описание отменённых товаров "
Отправлять событие нужно в тот момент,
когда пользователь отменил заказ или часть товаров,
или, например, когда истёк срок резерва заказа.
Полная или частичная отмена оплаченного заказа
Отмена оплаченного заказа подразумевает,
что перед этим уже было отправлено событие с тем же order_id
.
Возможные цепочки действий: PAY→REFUND, CANCEL→REFUND.
"status": "REFUND"
"order_id": "номер оплаченного ранее заказа "
"items": "описание возвращённых товаров "
Отправлять событие нужно в тот момент,
когда пользователь оформил возврат.
Оформление заказа без оплаты
curl --location 'https://tracker-s2s.my.com/v1/order/?idApp=001' \
--header 'Content-Type: application/json' \
--header 'Authorization: aaaaaAAAaaa01aaaaaaa1aaAAA11a' \
--data '{
"lvid": "00000000000000000000000000000000",
"order": {
"order_id": "000919",
"currency_code": "USD",
"status": "ADD",
"action_ts": "1709317326",
"coupon": "two-for-one",
"items": [
{
"item_id": "00912",
"item_name": "Apple",
"affilation": "Gardens",
"item_list_id": "5",
"item_list_name": "Fruits",
"price": "11.90",
"discount": "2",
"coupon": " two-for-one",
"tax": "20",
"index": "1",
"item_brand": "Honey Crisp",
"item_variant": "Green",
"item_category1": "Foodstuffs",
"item_category2": "Fruits",
"item_category3": "Apples",
"item_category4": "Sweet",
"location_id": "Oregon",
"quantity": "5"
}
]
}
}'
Частичная оплата заказа
curl --location 'https://tracker-s2s.my.com/v1/order/?idApp=001' \
--header 'Content-Type: application/json' \
--header 'Authorization: aaaaaAAAaaa01aaaaaaa1aaAAA11a' \
--data '{
"lvid": "00000000000000000000000000000000",
"order": {
"order_id": "000919",
"currency_code": "USD",
"status": "PAY",
"action_ts": "1709478868",
"coupon": "two-for-one",
"items": [
{
"item_id": "00912",
"item_name": "Apple",
"affilation": "Gardens",
"item_list_id": "5",
"item_list_name": "Fruits",
"price": "11.90",
"discount": "2",
"coupon": " two-for-one",
"tax": "20",
"index": "1",
"item_brand": "Honey Crisp",
"item_variant": "Green",
"item_category1": "Foodstuffs",
"item_category2": "Fruits",
"item_category3": "Apples",
"item_category4": "Sweet",
"location_id": "Oregon",
"quantity": "4"
}
]
}
}'
Частичная отмена неоплаченного заказа
curl --location 'https://tracker-s2s.my.com/v1/order/?idApp=001' \
--header 'Content-Type: application/json' \
--header 'Authorization: aaaaaAAAaaa01aaaaaaa1aaAAA11a' \
--data '{
"lvid": "00000000000000000000000000000000",
"order": {
"order_id": "000919",
"currency_code": "USD",
"status": "CANCEL",
"action_ts": "1709479828",
"coupon": "two-for-one",
"items": [
{
"item_id": "00912",
"item_name": "Apple",
"affilation": "Gardens",
"item_list_id": "5",
"item_list_name": "Fruits",
"price": "11.90",
"discount": "2",
"coupon": " two-for-one",
"tax": "20",
"index": "1",
"item_brand": "Honey Crisp",
"item_variant": "Green",
"item_category1": "Foodstuffs",
"item_category2": "Fruits",
"item_category3": "Apples",
"item_category4": "Sweet",
"location_id": "Oregon",
"quantity": "1"
}
]
}
}'
Частичный возврат оплаченного заказа
curl --location 'https://tracker-s2s.my.com/v1/order/?idApp=001' \
--header 'Content-Type: application/json' \
--header 'Authorization: aaaaaAAAaaa01aaaaaaa1aaAAA11a' \
--data '{
"lvid": "00000000000000000000000000000000",
"order": {
"order_id": "000919",
"currency_code": "USD",
"status": "REFUND",
"action_ts": "1709652628",
"coupon": "two-for-one",
"items": [
{
"item_id": "00912",
"item_name": "Apple",
"affilation": "Gardens",
"item_list_id": "5",
"item_list_name": "Fruits",
"price": "11.90",
"discount": "2",
"coupon": " two-for-one",
"tax": "20",
"index": "1",
"item_brand": "Honey Crisp",
"item_variant": "Green",
"item_category1": "Foodstuffs",
"item_category2": "Fruits",
"item_category3": "Apples",
"item_category4": "Sweet",
"location_id": "Oregon",
"quantity": "1"
}
]
}
}'
Коды ответов
Код
Ответ
Описание
200
{"message": "ОK"}
Запрос был успешно обработан
400
{"error": "Bad Request"}
Ошибка запроса, параметры не прошли валидацию
403
{"error": "Forbidden"}
Токен не прошёл валидацию, либо не подходит для приложения
400
{"error": "Empty post data"}
Пустое тело запроса
400
{"error": "Bad json"}
Передан битый json в теле запроса
400
{"error": "Bad api version"}
Неподдерживаемая версия API
404
{"error": "Method not found"}
Метод API не найден
500
{"error": "Internal Server Error"}
Внутренняя ошибка API. Нужно повторить запрос позже
Была ли эта статья полезна?
Да
Нет
Почему статья не помогла?