МойСклад LoyaltyAPI
LoyaltyAPI МоегоСклада дает возможность разработчикам обмениваться с внешними программами лояльности следующей информацией:
- Информация о покупателях и их балансе баллов лояльности
- Продажа и расчёт её скидки
- Возвраты
Подключение внешней программы лояльности в сервисе МойСклад происходит через решение, которое необходимо разработать и опубликовать в нашем каталоге решений. Для этого вам нужно:
- Получить доступ к Личному кабинету разработчика.
- Создать черновик серверного решения с указанием блока
<loyaltyApi/>
в дескрипторе. - Используя эту документацию создать бизнес-логику работы с системой лояльности на сервере.
- Протестировать и отправить решение на публикацию.
Сценарий работы
Предварительные условия:
- Пользователь на стороне МоегоСклада устанавливает решение.
- Разработчик в ответ на запрос активации решения на аккаунте возвращает статус
SettingsRequired
. - Разработчик через JSON API запрашивает всю необходимую информацию для настройки скидок (информация о покупателях, товарах, магазинах и т.д.).
- Пользователь на стороне МоегоСклада открывает окно настроек решения, при этом МойСклад отображает iframe с адресом, указанным Разработчиком в дескрипторе решения.
- Пользователь в iframe регистрируется на сайте разработчика или указывает полученные ранее данные для доступа.
- Разработчик передает данные для доступа к системе лояльности: базовый адрес системы лояльности (в приведенных примерах обозначен как example.com/baseurl) и ключ доступа через эндпоинт на стороне МоегоСклада. При этом может быть указан способ поиска покупателей: внутренний (в МоемСкладе) или внешний (в системе лояльности).
- Пользователь на странице настроек Скидок в МоемСкладе активирует программу лояльности, связанную с решением.
После всех настроек МойСклад может отправлять во внешнюю систему лояльности следующие запросы:
- Создание покупателя
- Поиск покупателя
- Запрос баланса баллов покупателя
- Расчет скидок для продажи
- Создание продажи
- Создание возврата
Запросы осуществляются на определенный эндпоинт относительно базового адреса. Каждый из запросов содержит в своем составе ключ доступа.
Обработка ошибок
Если возникла ошибка при обработке запроса, то она должна приходить с HTTP кодом, отличным от 200, 201 и 204
Структура ошибок
Ошибки представляют собой массив errors, содержащий объекты error, каждый из которых описывает отдельную ошибку.
Структура объекта error
- error
string
- Заголовок ошибкиНеобходимое
- parameter
string
- Параметр, на котором произошла ошибка - code
integer
- Код ошибкиНеобходимое
- error_message
string
- Сообщение, прилагаемое к ошибке.Необходимое
Response
412 (application/json)
{
"errors": [
{
"error": "Не указан обязательный параметр",
"parameter": "phone",
"code": 999,
"error_message": "Требуется указать номер телефона"
}
]
}
Сущности
Покупатель
Создание покупателя
Запрос на создание нового покупателя.
Атрибуты сущности
- retailStore
object
Необходимое
- meta
object
Необходимое
- href
string
- Идентификатор точки продажНеобходимое
- id
string
- Идентификатор точки продажНеобходимое
- href
- name
string
- Название точки продаж
- meta
- meta
object
Необходимое
- href
string
- Идентификатор покупателяНеобходимое
- id
string
- Идентификатор покупателяНеобходимое
- href
- name
string
- ФИО покупателя - discountCardNumber
string
- Номер дисконтной карты - phone
string
- Номер телефона в произвольном формате - email
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
- Members
syncId
string
- Уникальный идентификатор, присвоенный покупателю при создании через Кассу МойСкладstatusCheck
enum[string]
- Статус верификации контрагента через код подтверждения- Members
- UNCHECKED - Верификация контрагента по коду подтверждения не была произведена
- CHECKED - Верификация контрагента по коду подтверждения была произведена
- IGNORE - Верификация контрагента по коду подтверждения была проигнорирована, такой контрагент в любом случае попадает в базу данным МоегоСклада.
POST
/counterpartyRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/276a6f50-7ffd-11e6-8a84-bae50000005",
"id": "276a6f50-7ffd-11e6-8a84-bae50000005"
},
"name": "Иванов Иван Иванович",
"discountCardNumber": "MTIzNDU2Nzg5MA",
"phone": "+7 555 123 4568",
"email": "email@example.com",
"syncId": "6ebefb74-f6e3-4ef1-b155-5232a2ae396a",
"legalFirstName": "Иванов",
"legalMiddleName": "Иван",
"legalLastName": "Иванович",
"birthDate": "2023-07-14 00:00:00",
"sex": "MALE",
"statusCheck": "CHECKED"
}
Response
201
Поиск покупателя
Запрос на поиск существующего покупателя.
Параметры
Параметр | Описание |
---|---|
search | string Example: 9039993344 Строка с поисковым запросом |
retailStoreId | string Example: 2b5eb22f-139e-11e6-9464-e4de00000073 Идентификатор точки продаж Необходимое |
Атрибуты сущности
- rows
array
- Список покупателей- Покупатель
object
- id
string
- Уникальный идентификатор покупателя в системе лояльности в формате GUIDНеобходимое
- msId
string
- Уникальный идентификатор покупателя в системе МойСклад в формате GUID - name
string
- ФИО покупателяНеобходимое
- discountCardNumber
string
- Номер дисконтной карты - phone
string
- Номер телефона в произвольном формате - email
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента - sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
- Members
- id
- Покупатель
GET
/counterparty?search=9039993344&retailStoreId=2b5eb22f-139e-11e6-9464-e4de00000073Request
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Response
200 (application/json)
{
"rows": [
{
"id": "2b5eb22f-139e-11e6-9464-e4de00000073",
"msId": "276a6f50-7ffd-11e6-8a84-bae50000005",
"name": "Иванов Иван Иванович",
"discountCardNumber": "MTIzNDU2Nzg5MA",
"phone": "+7 555 123 4567",
"email": "email@example.com",
"legalFirstName":"Иванов",
"legalMiddleName":"Иванович",
"legalLastName":"Иванов",
"birthDate": "2023-07-14 00:00:00",
"sex": "MALE"
}
]
}
Получение баланса баллов покупателя
Запрос на получение баланса покупателя. Поиск и идентификация покупателя идет по идентификатору покупателя id
из метаданных.
Прочие реквизиты несут информационный характер и могут не предаваться. Передача нескольких покупателей в ответе не допускается.
Атрибуты сущности
- retailStore
object
Необходимое
- meta
object
Необходимое
- href
string
- Идентификатор точки продажНеобходимое
- id
string
- Идентификатор точки продажНеобходимое
- href
- name
string
- Магазин №1 - Название точки продаж
- meta
- meta
object
Необходимое
- href
string
- Идентификатор покупателяНеобходимое
- id
string
- Идентификатор покупателяНеобходимое
- href
- name
string
- ФИО покупателя - discountCardNumber
string
- Номер скидочной карты/счета - phone
string
- Номер телефона в произвольном формате - email
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента - sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
- Members
Атрибуты ответа
- bonusProgram
object
- Блок информации по баллам- agentBonusBalance
number
- Баланс баллов покупателя до продажи (текущий баланс)Необходимое
- agentBonusBalance
POST
/counterparty/detailRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/276a6f50-7ffd-11e6-8a84-bae50000005",
"id": "276a6f50-7ffd-11e6-8a84-bae50000005"
},
"name": "Иванов Иван Иванович",
"discountCardNumber": "MTIzNDU2Nzg5MA",
"phone": "+7 555 123 4567",
"email": "email@example.com",
"legalFirstName":"Иванов",
"legalMiddleName":"Иванович",
"legalLastName":"Иванов",
"birthDate": "2023-07-14 00:00:00",
"sex": "MALE"
}
Response
200 (application/json)Body
{
"bonusProgram": {
"agentBonusBalance": 500
}
}
Подготовка к запросу кода подтверждения регистрации покупателя
Если для регистрации покупателя с атрибутом "statusCheck": "UNCHECKED"
требуется провести подтверждение через код,
то необходимо в ответе на запрос вернуть ошибку:
Response
412 (application/json)
{
"errors": [
{
"error": "Необходимо подтверждение создания покупателя.",
"code": 28001,
"error_message": "Покупатель должен подтвердить свои данные через код."
}
]
}
Получение кода подтверждения регистрации покупателя
Метод предназначен для запроса кода у внешней бонусной программы с целью подтверждения регистрации покупателя.
Атрибуты сущности
- retailStore
object
Необходимое
- meta
object
Необходимое
- href
string
- Идентификатор точки продажНеобходимое
- id
string
- Идентификатор точки продажНеобходимое
- name
string
- Название точки продаж
- meta
- meta
object
Необходимое
- href
string
- Идентификатор покупателяНеобходимое
- href
- name
string
- ФИО покупателя - discountCardNumber
string
- Номер скидочной карты/счета - phone
string
- Номер телефона в произвольном формате - email
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента - sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
POST
/counterparty/verifyRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"meta": {
"href": "https://api.moysklad.ru/api/posap/1.0/entity/counterparty/syncid/276a6f50-7ffd-11e6-8a84-bae50000005"
},
"name":"Ромашкова Варвара Никитична",
"discountCardNumber":"09716398",
"phone":"+79011231122",
"email":"romashkova@fmail.com",
"legalFirstName":"Варвара",
"legalMiddleName":"Никитична",
"legalLastName":"Ромашкова",
"birthDate":"1992-08-01 00:00:00",
"sex":"FEMALE"
}
Атрибуты ответа
- verificationCode
string
Необходимое
- Код, отправленный покупателю. - timeForRepeat
integer
- Время в секундах, по прошествии которого, можно запросить код повторно. - messageForCashier
string
- Сообщение, которое необходимо отобразить кассиру (140 символов).
Response
200 (application/json)Headers
Content-Type:application/json
Body
{
"verificationCode":"123456",
"timeForRepeat": 60,
"messageForCashier": "Код был отправлен на номер покупателя: +79011231122"
}
Продажа
Расчет скидок для продажи
Запрос на пересчет скидок для операции продажи. В запросе передается продажа без применения скидок. В ответе ожидается продажа со всеми примененными скидками. В случае округления суммы чека, допускается разбиение одной позии на две.
Если проишло разбиение позиции, то необходимо учитывать значение в поле sn (серийные номера). Правило следующее - количество серийных номеров изначальной позиции совпадает с количеством серийных номеров в позициях, получившихся в результате разбиения. Так же, количество серийных номеров должно быть равно количеству товара (поле quantity).
После расчета скидок, приложение уже никак не меняет состав чека и не применяет другие скидки.
Атрибуты сущности
- retailStore
object
Необходимое
- meta
object
Необходимое
- href
string
- Идентификатор точки продажНеобходимое
- id
string
- Идентификатор точки продажНеобходимое
- href
- name
string
- Название точки продаж
- meta
agent
object
- Реквизиты покупателя в формате метаданныхНеобходимое
- meta
object
Необходимое
- href
string
- Идентификатор покупателяНеобходимое
- id
string
- Идентификатор покупателяНеобходимое
- href
- name
string
- ФИО покупателя - discountCardNumber
string
- Номер скидочной карты/счета - phone
string
- Номер телефона в произвольном формате - email
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента - sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
- Members
- meta
positions
array
- Перечень всех позиций чека- assortment
object
- Реквизиты позиции в формате метаданныхНеобходимое
- meta
object
`Необходимое
- href
string
- Идентификатор товара/услугиНеобходимое
- id
string
- Идентификатор товара/услугиНеобходимое
- idType
string
- тип id. Одно из значений[native, sync]
Необходимое
- type
string
- Тип сущностиНеобходимое
- href
- meta
- quantity
number
- Количество в чеке (3 зн. после запятой)Необходимое
- price
number
- Цена за единицу (2 зн. после запятой)Необходимое
- sn
array
- Список серийных номеров в формате метаданных- meta
object
Необходимое
- href
string
- Идентификатор серийного номераНеобходимое
- id
string
- Идентификатор серийного номераНеобходимое
- href
- name
string
- Серийный номерstring
- meta
- pack
object
- Упаковка- id
UUID
- Уникальный идентификатор упаковкиНеобходимое
- name
string
- Название упаковкиНеобходимое
- quantity
double
- КоличествоНеобходимое
- barcode
string
- Штрихкод
- id
- assortment
bonusProgram
object
- Блок информации по балламobject
- transactionType
enum[string]
- Тип операции с баллами (начисление - EARNING, списание - SPENDING)- Default: EARNING
- Members
- EARNING
- SPENDING
- transactionType
preferredBonusToSpend
number
- Количество бонусных баллов, которые нужно списать
POST
/retaildemand/recalcRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"agent": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/276a6f50-7ffd-11e6-8a84-bae50000005",
"id": "276a6f50-7ffd-11e6-8a84-bae50000005"
},
"name": "Иванов Иван Иванович",
"discountCardNumber": "MTIzNDU2Nzg5MA",
"phone": "+7 555 123 4567",
"email": "email@example.com",
"legalFirstName": "Иванов",
"legalMiddleName": "Иван",
"legalLastName": "Иванович",
"sex": "MALE",
"birthDate": "2023-07-14 00:00:00"
},
"positions": [
{
"assortment": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/9c56720c-e8a7-4fdc-aea4-7104f28207be",
"id": "9c56720c-e8a7-4fdc-aea4-7104f28207be"
}
},
"quantity": 123.456,
"price": 123.45,
"sn": [
{
"meta": {
"href": "https://online.moysklad.ru/api/posap/1.0/entity/sn/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "7895545"
}
],
"pack": {
"id": "98f87a95-c0b6-11ee-0a80-06e1000360e2",
"name": "Бутылка 1,5 л",
"quantity": 1.5,
"barcode": "2000000051420"
}
}
],
"bonusProgram": {
"transactionType": "EARNING"
}
}
Атрибуты ответа
- agent
object
- Реквизиты покупателя в формате метаданныхНеобходимое
- meta
object
Необходимое
- href:
string
- Идентификатор покупателяНеобходимое
- id:
string
- Идентификатор покупателяНеобходимое
- href:
- name:
string
- ФИО покупателя - discountCardNumber:
string
- Номер скидочной карты/счета - phone:
string
- Номер телефона в произвольном формате - email:
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента - sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
- Members
- meta
- positions
array
- Перечень всех позиций чека- assortment
object
- Реквизиты позиции в формате метаданныхНеобходимое
- meta
object
Необходимое
- href:
string
- Идентификатор товара/услугиНеобходимое
- id:
string
- Идентификатор товара/услугиНеобходимое
- href:
- meta
- quantity:
number
- Количество в чеке (3 зн. после запятой)Необходимое
- price:
number
- Цена за единицу (2 зн. после запятой)Необходимое
- discountPercent:
number
- Процент скидки (2 зн. после запятой). от 0 до 100Необходимое
- discountedPrice:
number
- Цена с учетом скидки (2 зн. после запятой)Необходимое
- sn
array
- Коллекция уникальных идентификаторов серийных номеров в формате метаданных. Если массив не пуст, то количество товаров в позиции (quantity) должно быть равно количеству серийных номеров, переданных в значении атрибута- meta
object
Необходимое
- href:
string
- Идентификатор серийного номераНеобходимое
- id:
string
- Идентификатор серийного номераНеобходимое
- href:
- name:
string
- Серийный номер
- meta
- pack
object
- Упаковка- id
UUID
- Уникальный идентификатор упаковкиНеобходимое
- name
string
- Название упаковкиНеобходимое
- quantity
double
- КоличествоНеобходимое
- barcode
string
- Штрихкод
- id
- assortment
- bonusProgram
object
- Блок информации по баллам- transactionType:
enum[string]
- Тип операции с баллами (начисление - EARNING, списание - SPENDING)- Default: EARNING
- Members
- EARNING
- SPENDING
- agentBonusBalance:
number
- Баланс баллов покупателя до продажи. - bonusValueToSpend:
number
- Сколько будет списано баллов за продажу. В случае отсутствия/null поля preferredBonusToSpend стоит возвращать максимально доступную сумму для списания по этой продаже. - bonusValueToEarn:
number
- Сколько может быть начислено баллов за продажу. - agentBonusBalanceAfter:
number
- Баланс баллов покупателя после продажи. - paidByBonusPoints:
number
- Сумма оплаченная бонусами (2 знака после запятой). - receiptExtraInfo:
string
- Дополнительный текст для вывода в чеке, может содержать переносы строк.
- transactionType:
- needVerification
boolean
- Флаг, показывающий нужно ли запросить код для проверки личности контрагента.
Response
200 (application/json)Headers
Content-Type:application/json
Body
{
"agent": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/276a6f50-7ffd-11e6-8a84-bae50000005",
"id": "276a6f50-7ffd-11e6-8a84-bae50000005"
},
"name": "Иванов Иван Иванович",
"discountCardNumber": "MTIzNDU2Nzg5MA",
"phone": "+7 555 123 4567",
"email": "email@example.com",
"legalFirstName": "Иванов",
"legalMiddleName": "Иван",
"legalLastName": "Иванович",
"sex": "MALE",
"birthDate": "2023-07-14 00:00:00"
},
"positions": [
{
"assortment": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/9c56720c-e8a7-4fdc-aea4-7104f28207be",
"id": "9c56720c-e8a7-4fdc-aea4-7104f28207be"
}
},
"quantity": 123.456,
"price": 123.45,
"discountPercent": 49.99,
"discountedPrice": 62.95,
"sn": [
{
"meta": {
"href": "https://online.moysklad.ru/api/posap/1.0/entity/sn/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "7895545"
}
],
"pack": {
"id": "98f87a95-c0b6-11ee-0a80-06e1000360e2",
"name": "Бутылка 1,5 л",
"quantity": 1.5,
"barcode": "2000000051420"
}
}
],
"bonusProgram": {
"transactionType": "EARNING",
"agentBonusBalance": 500,
"bonusValueToSpend": 0,
"bonusValueToEarn": 150,
"agentBonusBalanceAfter": 650,
"paidByBonusPoints": 0,
"receiptExtraInfo": "Спасибо за участие в нашей программе!"
},
"needVerification": false
}
Запрос кода подтверждения списания баллов
Метод предназначен для запроса кода у внешней бонусной программы с целью подтверждения списания бонусов.
Атрибуты запроса
- retailStore
object
Необходимое
- meta
object
Необходимое
- href
string
- Идентификатор точки продажНеобходимое
- id
string
- Идентификатор точки продажНеобходимое
- href
- name
string
- Название точки продаж
- meta
- counterpartyId
string
Необходимое
- Идентификатор контрагента, необходимый для синхронизации. - phone
string
- Телефонный номер покупателя, указанный в карточке контрагента.
POST
/retaildemand/verifyRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"counterpartyId": "75d9ba29-2c4a-4c1c-a3a8-8db00366ac04",
"phone": "+79011231122"
}
Атрибуты ответа
- verificationCode
string
Необходимое
- Код, отправленный покупателю. - timeForRepeat
integer
- Время в секундах, по прошествии которого, можно запросить код повторно. - messageForCashier
string
- Сообщение, которое необходимо отобразить кассиру (140 символов).
Response
200 (application/json)Headers
Content-Type:application/json
Body
{
"verificationCode":"123456",
"timeForRepeat": 60,
"messageForCashier": "Код был отправлен на номер покупателя: +79011231122"
}
Создание продажи
Запрос на создание новой продажи. Если при продаже начислялись или списывались баллы, информация об этом указывается в секции bonusProgram
Атрибуты сущности
- retailStore
object
Необходимое
- meta
object
Необходимое
- href
string
- Идентификатор точки продажНеобходимое
- id:
string
- Идентификатор точки продажНеобходимое
- href
- name
string
- Название точки продаж
- meta
- name
string
- Номер продажи - moment
string
- Дата продажи - meta
object
- Реквизиты продажи в формате метаданныхНеобходимое
- href
string
- Идентификатор продажи (URL)Необходимое
- id
string
- Идентификатор продажиНеобходимое
- href
- agent
object
- Реквизиты покупателя в формате метаданных- meta
object
- href
string
- Идентификатор покупателяНеобходимое
- id
string
- Идентификатор покупателяНеобходимое
- href
- name
string
- ФИО покупателя - discountCardNumber
string
- Номер скидочной карты/счета - phone
string
- Номер телефона в произвольном формате - email
string
- Почтовый адрес - legalFirstName
string
- Имя контрагента - legalMiddleName
string
- Отчество контрагента - legalLastName
string
- Фамилия контрагента - birthDate
date
- Дата рождения контрагента - sex
enum[string]
- Пол контрагента (Мужской - MALE, женский - FEMALE)- Members
- MALE
- FEMALE
- Members
- meta
- positions
array
- Перечень всех позиций чека- assortment
object
- Реквизиты позиции в формате метаданных- syncId
string
- Уникальный идентификатор, присвоенный товару/услуге при создании через Кассу МойСклад или JSON API - meta
object
- href
string
- Идентификатор товара/услугиНеобходимое
- id
string
- Идентификатор товара/услугиНеобходимое
- href
- syncId
- quantity
number
- Количество в чеке (3 зн. после запятой) - price
number
- Цена за единицу (2 зн. после запятой) - discountPercent
number
- Процент скидки (2 зн. после запятой) - discountedPrice
number
- Цена с учетом скидки (2 зн. после запятой)
- assortment
- bonusProgram
object
- Блок информации по баллам- bonusValueToSpend
number
- Сколько может быть списано баллов за продажу - bonusValueToEarn
number
- Сколько может быть начислено баллов за продажу
- bonusValueToSpend
- cashSum
number
- Оплачено наличными (в рублях) - noCashSum
number
- Оплачено картой (в рублях)
POST
/retaildemandRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"name": "00001",
"moment": "2016-04-18 15:06:00",
"meta": {
"href": "",
"id": ""
},
"agent": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/276a6f50-7ffd-11e6-8a84-bae50000005",
"id": "276a6f50-7ffd-11e6-8a84-bae50000005"
},
"name": "Иванов Иван Иванович",
"discountCardNumber": "MTIzNDU2Nzg5MA",
"phone": "+7 555 123 4567",
"email": "email@example.com",
"legalFirstName": "Иванов",
"legalMiddleName": "Иван",
"legalLastName": "Иванович",
"sex": "MALE",
"birthDate": "2023-07-14 00:00:00"
},
"positions": [
{
"assortment": {
"syncId": "f085d67e-6eae-11e6-8a84-bc520403352a",
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/9c56720c-e8a7-4fdc-aea4-7104f28207be",
"id": "9c56720c-e8a7-4fdc-aea4-7104f28207be"
}
},
"quantity": 123.456,
"price": 123.45,
"discountPercent": 49.99,
"discountedPrice": 62.95
}
],
"bonusProgram": {
"bonusValueToSpend": 0,
"bonusValueToEarn": 150
},
"cashSum": 62.95,
"noCashSum": 283.1
}
Response
201
Возврат
Создание возврата
Запрос на создание нового возврата. В составе запроса может быть указана ссылка на документ продажи. Операции с баллами в составе возврата не передаются. Система лояльности, на основании информации из связанной продажи, самостоятельно начисляет/списывает баллы при необходимости.
Атрибуты сущности
- retailStore
object
Необходимое
- meta
object
- href:
string
- Идентификатор точки продажНеобходимое
- id:
string - Идентификатор точки продаж
Необходимое`
- href:
- name:
string
- Название точки продаж
- meta
- name:
string
Номер возврата - moment:
string
Дата возврата - meta
object
- Реквизиты возврата в формате метаданныхНеобходимое
- href
string
- Идентификатор возврата (URL)Необходимое
- id
string
- Идентификатор возвратаНеобходимое
- href
- demand
object
- Реквизиты продажи в формате метаданных- meta
object
- href
string
- Идентификатор продажи (URL)Необходимое
- id
string
Необходимое) - Идентификатор продажиНеобходимое
- href
- meta
- agent
object
- Реквизиты покупателя в формате метаданных- href:
string
- Идентификатор покупателяНеобходимое
- id:
string
- Идентификатор покупателяНеобходимое
- href:
- positions
array
- Перечень всех позиций чека- assortment
object
- Реквизиты позиции в формате метаданных- syncId
string
- Уникальный идентификатор, присвоенный товару/услуге при создании через Кассу МойСклад или JSON API - meta
object
- href:
string
- Идентификатор товара/услугиНеобходимое
- id:
string
- Идентификатор товара/услугиНеобходимое
- href:
- syncId
- quantity:
number
- Количество в чеке (3 зн. после запятой) - price:
number
- Цена за единицу (2 зн. после запятой) - discountPercent:
number
- Процент скидки (2 зн. после запятой) - discountedPrice:
number
- Цена с учетом скидки (2 зн. после запятой)
- assortment
- cashSum:
number
- Возвращено наличными (в рублях) - noCashSum:
number
- Возвращено картой (в копейках)
POST
/retailsalesreturnRequest
Headers
Content-Type:application/json
Lognex-Discount-API-Auth-Token:Токен авторизации
Body
{
"retailStore": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/2b5eb22f-139e-11e6-9464-e4de00000073",
"id": "2b5eb22f-139e-11e6-9464-e4de00000073"
},
"name": "Магазин №1"
},
"name": "00001",
"moment": "2016-04-27 15:43:00",
"meta": {
"href": "",
"id": ""
},
"demand": {
"meta": {
"href": "",
"id": ""
}
},
"agent": {},
"positions": [
{
"assortment": {
"syncId": "f085d67e-6eae-11e6-8a84-bc520403352a",
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/9c56720c-e8a7-4fdc-aea4-7104f28207be",
"id": "9c56720c-e8a7-4fdc-aea4-7104f28207be"
}
},
"quantity": 123.456,
"price": 123.45,
"discountPercent": 49.99,
"discountedPrice": 62.95
}
],
"cashSum": 62.95,
"noCashSum": 283100.0
}
Response
201