Новость на модерации
Содержание статьи
p> CIS (Code of Individual Serialization) — уникальный код идентификации единицы товара в системе "Честный ЗНАК". В контексте Lamoda API используется формат UIT (Unique Identification Token).
Формат UIT для API
При работе с Lamoda API используется нормализованный формат UIT:
| Тип | Длина | Формат | Пример |
| UIT без ТН ВЭД | 31 символ |
01{GTIN}21{SerialNumber}
|
010467003301005321gJk6o54AQBJfX
|
| UIT с ТН ВЭД | 38 символов |
01{GTIN}21{SerialNumber}240{TNVED}
|
010467003301005321gJk6o54AQBJfX2406401
|
Разбор структуры кода
Рассмотрим код: 010467003301005321gJk6o54AQBJfX2406401
| Часть | Значение | Описание |
01
|
Application Identifier | Идентификатор GTIN |
0467003301005
|
GTIN | Глобальный идентификатор товара (14 цифр, включая лидирующий 0) |
21
|
Application Identifier | Идентификатор серийного номера |
gJk6o54AQBJfX
|
Serial Number | Уникальный серийный номер (13 символов) |
240
|
Application Identifier | Идентификатор кода ТН ВЭД (опционально) |
6401
|
ТН ВЭД | Код товарной номенклатуры (4-6 цифр) |
Преобразование DataMatrix → UIT
Полный DataMatrix содержит криптохвост, который не нужен для API:
Полный DataMatrix
010467003301005321gJk6o54AQBJfX\u001d2406401\u001d91ffd0\u001d92LGYcm3FRQrRdNOO+8t0pz78QTyxxBmYKhLXaAS03jKV7oy+DWGy1SeU+BZ8o7B8+hs9LvPdNA7B6NPGjrCm34A==
Нормализация до UIT
# Python-пример нормализации
def normalize_to_uit(datamatrix):
"""Преобразует полный DataMatrix в UIT"""
# Удаляем криптохвост (всё после 91 или 92)
if '\x1d91' in datamatrix:
datamatrix = datamatrix.split('\x1d91')[0]
elif '\\u001d91' in datamatrix:
datamatrix = datamatrix.split('\\u001d91')[0]
# Удаляем GS-разделители
uit = datamatrix.replace('\x1d', '').replace('\\u001d', '')
return uit
# Результат: 010467003301005321gJk6o54AQBJfX2406401
Автоматическая нормализация: Lamoda автоматически нормализует полный DataMatrix до UIT при получении через API. Однако рекомендуется передавать уже нормализованный UIT для предсказуемости.
Валидация кодов
Проверка формата UIT
import re
def validate_uit(uit):
"""Валидация UIT-кода"""
# Паттерн для UIT без ТН ВЭД (31 символ)
pattern_short = r'^01\d{14}21[A-Za-z0-9]{13}$'
# Паттерн для UIT с ТН ВЭД (38 символов)
pattern_long = r'^01\d{14}21[A-Za-z0-9]{13}240\d{4,6}$'
if len(uit) == 31 and re.match(pattern_short, uit):
return {'valid': True, 'type': 'UIT без ТН ВЭД'}
elif len(uit) >= 37 and re.match(pattern_long, uit):
return {'valid': True, 'type': 'UIT с ТН ВЭД'}
else:
return {'valid': False, 'error': 'Неверный формат UIT'}
# Примеры
validate_uit("010467003301005321gJk6o54AQBJfX")
# {'valid': True, 'type': 'UIT без ТН ВЭД'}
validate_uit("010467003301005321gJk6o54AQBJfX2406401")
# {'valid': True, 'type': 'UIT с ТН ВЭД'}
Извлечение компонентов
def parse_uit(uit):
"""Парсит UIT и возвращает компоненты"""
result = {}
if uit.startswith('01') and len(uit) >= 31:
result['gtin'] = uit[2:16]
result['serial'] = uit[18:31]
if len(uit) > 31 and '240' in uit:
tnved_start = uit.index('240') + 3
result['tnved'] = uit[tnved_start:]
return result
# Пример
parse_uit("010467003301005321gJk6o54AQBJfX2406401")
# {
# 'gtin': '04670033010053',
# 'serial': 'gJk6o54AQBJfX',
# 'tnved': '6401'
# }
Передача в API
Поставка FBO с маркировкой
curl -X POST "https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "SHIP-2025-001",
"items": [
{
"sku": "SELLER-SHOES-001",
"ean": "4670033010053",
"quantity": 3,
"price": 7500.00,
"datamatrixes": [
"010467003301005321gJk6o54AQBJfX2406401",
"010467003301005321hKl7p65BRCKgY2406401",
"010467003301005321iMm8q76CSELhZ2406401"
]
}
]
}'
Отгрузка FBS с маркировкой
curl -X POST "https://api-b2b.lamoda.ru/api/v1/shipments/out" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "OUT-2025-001",
"type": "Sale",
"shippedAt": "2025-01-20",
"destination": "PPBykovo",
"containers": [
{
"barcode": "PALOUT001",
"type": "pallet",
"containers": [
{
"barcode": "FBS123456789",
"type": "pack",
"items": [
{
"orderNr": "CZ117391950",
"sku": "XD001XW03JMM",
"unitload": "CZ117391950-001",
"datamatrix": "010467003301005321gJk6o54AQBJfX2406401"
}
]
}
]
}
]
}'
Обработка ошибок
| Ошибка | Причина | Решение |
| Invalid datamatrix format | Неверный формат или длина кода | Проверьте соответствие формату UIT (31 или 38 символов) |
| Datamatrix already used | Код уже использован в другой поставке | Каждый UIT уникален, используйте новый код |
| Datamatrix count mismatch | Количество кодов не соответствует quantity | Передайте ровно столько кодов, сколько единиц товара |
| Missing datamatrix for marked goods | Не переданы коды для маркированного товара | Добавьте поле datamatrixes для маркированных категорий |
Получение UIT из нотификаций
Lamoda возвращает UIT в нотификациях:
Нотификация о статусе товара
{
"type": "itemStatusChanged",
"data": {
"id": "CZ117391950",
"items": [
{
"id": 7598,
"sku": "SELLERSKU104",
"status": "Delivered",
"datamatrix": "010467003301005321gJk6o54AQBJfX"
}
]
}
}
Нотификация о поставке
{
"type": "fulfilmentShipmentStatusChanged",
"data": {
"shipmentId": "SHIP-2025-001",
"status": "received",
"items": [
{
"sku": "SELLER-SHOES-001",
"quantity": 3,
"receipt": 3,
"datamatrixes": [
"010467003301005321gJk6o54AQBJfX2406401",
"010467003301005321hKl7p65BRCKgY2406401",
"010467003301005321iMm8q76CSELhZ2406401"
]
}
]
}
}
Работа с GS-разделителями
При получении DataMatrix со сканера могут присутствовать скрытые символы:
Важно: GS-символ (Group Separator,\u001d) невидим в большинстве текстовых редакторов, но влияет на парсинг кода.
Обработка GS-символов
def clean_datamatrix(raw_code):
"""Очистка DataMatrix от GS-символов и криптохвоста"""
# Заменяем различные представления GS
code = raw_code.replace('\x1d', '') # ASCII 29
code = code.replace('\\u001d', '') # JSON-escaped
code = code.replace('', '') # Текстовое представление
# Удаляем криптохвост (начинается с 91 или 92)
for marker in ['91', '92']:
if marker in code:
idx = code.index(marker)
# Проверяем, что это действительно криптохвост, а не часть серийника
if idx > 31:
code = code[:idx]
break
return code
Коды ТН ВЭД для fashion-товаров
Основные коды ТН ВЭД для маркированных товаров Lamoda:
| Код | Категория |
| 6401 | Обувь водонепроницаемая |
| 6402 | Обувь на подошве и с верхом из резины/пластмассы |
| 6403 | Обувь с верхом из кожи |
| 6404 | Обувь с верхом из текстильных материалов |
| 6405 | Обувь прочая |
| 6201 | Пальто, куртки мужские |
| 6202 | Пальто, куртки женские |
| 6203 | Костюмы, брюки мужские |
| 6204 | Костюмы, брюки женские |
Best practices
- Храните соответствие — ведите базу данных SKU → UIT
- Валидируйте перед отправкой — проверяйте формат и длину UIT
- Не дублируйте коды — каждый UIT уникален и используется один раз
- Обрабатывайте GS-символы — очищайте коды от скрытых символов
- Используйте UIT, не полный DataMatrix — криптохвост не нужен для API
- Сохраняйте UIT из нотификаций — Lamoda возвращает нормализованный UIT
См. также
Помогла эта информация?
Спасибо за отзыв