Сертификаты
Дата написания: 24.06.2020
Добавить группу сертификатов
POST |
/organization/certificate_group/add |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{ "id": "1", //[Необязательный]. Идентификатор. Если не передан - генерируется сервисом.
"name": "2", //[Необязательный]. Наименование
"description": "3", //[Необязательный]. Дополнительное описание
"start_date": 1583084146659, //[Необязательный]. Дата начала действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.
"end_date": 1611596146659, //[Необязательный]. Дата окончания действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.
"start_sale_date": 1583948146659, //[Необязательный]. Дата начала продажи сертификатов Нельзя продавать сертификаты раньше этого срока. Оплачивать можно.
"end_sale_date": 1602956146659, //[Необязательный]. Дата начала продажи сертификатов Нельзя продавать сертификаты позже этого срока. Оплачивать можно.
"period_type": 0, //[Обязательный]. Вариант действия серийного номера //0 - Совпадает с периодом действия сертификата //1 - Относительно даты активации сертификата
"use_days": 0, //[Необязательный]. Сколько дней действует сертификат //Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат
"value":500.5, //[Необязательный]. Номинал сертификата //Если выбран абсолютный номинал используем это значение. //Если 0, тогда это значит, что сертификат Плавающий.
"use_method": 0, //[Необязательный]. Гашение сертификата // 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются // 1 - может списываться по кусочкам, пока полность. не кончится;
"exclude_shop_items": [ "shop_1111", "shop_2222" ], //[Необязательный].Магазины в которых нельзя использовать и продавать сертификат
"include_shop_items": [ "shop_1", "shop_2" ] //[Необязательный]. Магазины в которых можно использовать и продавать сертификат
} |
|
Выходной JSON |
{ |
|
Изменить группу сертификатов
POST |
/organization/certificate_group/{id} |
|
Параметры URI |
id // Идентификатор существующей группы |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{
"name": "2", //[Необязательный]. Наименование
"description": "3", //[Необязательный]. Дополнительное описание
"start_date": 1583084146659, //[Необязательный]. Дата начала действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.
"end_date": 1611596146659, //[Необязательный]. Дата окончания действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.
"start_sale_date": 1583948146659, //[Необязательный]. Дата начала продажи сертификатов Нельзя продавать сертификаты раньше этого срока. Оплачивать можно.
"end_sale_date": 1602956146659, //[Необязательный]. Дата начала продажи сертификатов Нельзя продавать сертификаты позже этого срока. Оплачивать можно.
"period_type": 0, //[Обязательный]. Вариант действия серийного номера //0 - Совпадает с периодом действия сертификата //1 - Относительно даты активации сертификата
"use_days": 0, //[Необязательный]. Сколько дней действует сертификат //Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат
"value":500.5, //[Необязательный]. Номинал сертификата //Если выбран абсолютный номинал используем это значение. //Если 0, тогда это значит, что сертификат Плавающий.
"use_method": 0, //[Необязательный]. Гашение сертификата // 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются // 1 - может списываться по кусочкам, пока полность. не кончится;
} |
|
Выходной JSON |
{ |
|
Удалить группу сертификатов
Все входящие в группу сертификаты будут аннулированы.
POST |
/organization/certificate_group/{id}/delete |
|
Параметры URI |
id // Идентификатор существующей группы |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{ } |
|
Выходной JSON |
{ "message": "Операция выполнена" |
|
Получить группу сертификатов
GET |
/organization/certificate_group/{id} |
|
Параметры URI |
id // Идентификатор существующей группы |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Выходной JSON |
{
{ "id": "1", //[Необязательный]. Идентификатор. Если не передан - генерируется сервисом.
"name": "2", //[Необязательный]. Наименование
"description": "3", //[Необязательный]. Дополнительное описание
"start_date": 1583084146659, //[Необязательный]. Дата начала действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.
"end_date": 1611596146659, //[Необязательный]. Дата окончания действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.
"start_sale_date": 1583948146659, //[Необязательный]. Дата начала продажи сертификатов Нельзя продавать сертификаты раньше этого срока. Оплачивать можно.
"end_sale_date": 1602956146659, //[Необязательный]. Дата начала продажи сертификатов Нельзя продавать сертификаты позже этого срока. Оплачивать можно.
"period_type": 0, //[Обязательный]. Вариант действия серийного номера //0 - Совпадает с периодом действия сертификата //1 - Относительно даты активации сертификата
"use_days": 0, //[Необязательный]. Сколько дней действует сертификат //Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат
"value":500.5, //[Необязательный]. Номинал сертификата //Если выбран абсолютный номинал используем это значение. //Если 0, тогда это значит, что сертификат Плавающий.
"use_method": 0, //[Необязательный]. Гашение сертификата // 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются // 1 - может списываться по кусочкам, пока полность. не кончится;
"exclude_shop_items": [ { "id":"37615a36-5893-11e6-8caa-0050568b35ac", "name":"Западный склад" } ], //[Необязательный].Магазины в которых нельзя использовать и продавать сертификат
"include_shop_items": [ { "id":"37615a36-5893-11e6-8caa-0050568b35ac", "name":"Западный склад" } ] //[Необязательный]. Магазины в которых можно использовать и продавать сертификат
}
|
|
Получить список групп сертификатов
GET |
/organization/certificate_group |
|
Параметры в строке запроса |
name_filter //[Необязательный]. Полнотекстовый поиск по наименованию группы page //[Необязательный]. Номер страницы которую нужно получить per_page //[Необязательный]. Количество строк на страницу calculate_count //[Необязательный]. Рассчитывать ли пагинацию по всей таблице? |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Выходной JSON |
{
"row_number": 1, "id":"cert_gr_03", "name":"cert_gr_03 вручную", "description":"УЛК вручную", "start_date": 1583183400000, "end_date": 0, "start_sale_date": 1583787600000, "end_sale_date": 1588194000000, "period_type": 0, "use_days": 0, "value":0, "use_method": 0, "deleted":false, "include_shop_items": [ { "id":"eeafbd10-0cf4-11ea-ba8a-5404a6b11b7d", "name":"Магазин1" } ] }, { "row_number": 2, "id":"58764bba-a040-4b6e-a6c0-95fbf1019947", "name":"cert_TSB", "description":"buy sale test", "start_date": 1583182801000, "end_date": 1585026000000, "start_sale_date": 1583614800000, "end_sale_date": 1585256400000, "period_type": 1, "use_days": 0, "value":0, "use_method": 1, "deleted":false } ],
"pagination": { "per_page": 10, // Количество строк на страницу "page" : 1, // Номер текущей страницы "items" : 15275, // Всего записей "pages" : 1528 // Всего страниц }
|
|
Добавить сертификат
POST |
/organization/certificate/add |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{ "id":"certificate_1", //[Необязательный] Идентификатор (код) сертификата
"group_id":"fa323281-1c16-446d-9d1a-85db4e92dd77", //[Необязательный] идентификатор группы сертификатов
"description":"Сертификат certificate_1", //[Необязательный] Описание сертификата
"status": 0, //[Необязательный] // Деактивирован (0), // Активирован (1), // Потрачен (2), // Аннулирован (3), // Истек (4)
"status_description":"Пояснение к статусу", //[Необязательный]
"status_date": 1585735857114, //[Необязательный] Дата изменения статуса
"activation_date": 1585735857114 //[Необязательный] Дата активации } |
|
Выходной JSON |
{ |
|
Аннулировать сертификат
POST |
/organization/certificate/{id}/delete |
|
Параметры URI |
id // Идентификатор существующего сертификата |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{ } |
|
Выходной JSON |
{ "message": "Операция выполнена" |
|
Получить сертификат
При продаже:
Проверяем
1 certificate.status
Пояснение: сертификат активирован;
2 certificate.certificate_group.start_date < certificate.status_date"
Пояснение: дата активации сертификата больше, чем дата начала действия сертификата. На тот случай, если кто то в группе сертификатов отредактирует поле "Действует с", а из этой группы сертификаты уже были активированы
3
Если в этом массиве есть записи certificate.certificate_group.exclude_shop_items, то shop_id из которого ведется продажа - нед должно быть в нем;
Если в этом массиве есть записи certificate.certificate_group.include_shop_items, то shop_id из которого ведется продажа - должен быть в нем;
Пояснение: группу сертификатов можно настроить таким образом, что сертификаты можно продавать или оплачивать ими только из определенных магазинов (применений, исключений) - проверяем, что текущий магазин входит в множество применений и не входит в множество исключений.
4 certificate.status_date < текущей даты
Пояснение: у нас активация может быть будущим числом - поэтому нужно проверить, что активация уже наступила.
GET |
/organization/certificate/{id}?full_info=True |
|
Параметры URI |
id // Идентификатор существующей карты full_info // если в истине - то вместе с сертификатом получается его группа |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Выходной JSON |
{ "certificate": { "row_number": 1, "id":"certificate_1", "group_id":"certificate_group_1", "description":"Сертификат обновлен certificate_1", "status": 3, // Деактивирован (0), Активирован (1), // Потрачен (2), // Аннулирован (3), // Истек (4)
"status_date": 1583131949683, "status_description":"Аннулирован", "activation_date": 1582798366510, "value":0, "nominal":500.5, "balance":0, // Текущие доступные средства на счету сертификата "certificate_group": { "row_number": 1, "id":"certificate_group_1", "name":"Группа сертификатов certificate_group_1", "description":"Описание группы сертификатов certificate_group_1", "start_date": 1580206362000, //Когда можно продавать и оплачивать сертификатом
"end_date": 1608729162000, //Когда можно продавать и оплачивать сертификатом
"start_sale_date": 1581070362000, // Когда можно продавать сертификат
"end_sale_date": 1600078362000, // Когда можно продавать сертификат
"period_type": 0, // 0 - Совпадает с периодом действия сертификата // 1 - Относительно даты активации сертификата
"use_days": 0, // Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат
"value":500.5, // Если выбран абсолютный номинал используем это значение. // Если 0, тогда это значит, что сертификат Плавающий.
"use_method": 0, // 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются
"deleted":false,
"include_shop_items": [ { "id":"abf58710-f5c8-11e2-802f-0015e9b8c48d", "name":"Магазин 1" } ], // Магазины применений
"exclude_shop_items": [ { "id":"abf58710-f6c8-11e2-802f-0015e9b8c48d", "name":"Магазин 2" } ] // Магазины исключений } }, "code": 0, "message":"Операция выполнена" } |
|
Получить список сертификатов
GET |
/organization/certificate |
|
Параметры в строке запроса |
group_id //[Необязательный]. Идентификатор группы в котором выполняется поиск status=0 //[Необязательный]. //[Необязательный] // Деактивирован (0), // Активирован (1), // Потрачен (2), // Аннулирован (3), // Истек (4)
page //[Необязательный]. Номер страницы которую нужно получить per_page //[Необязательный]. Количество строк на страницу calculate_count //[Необязательный]. Рассчитывать ли пагинацию по всей таблице? |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Выходной JSON |
{ "certificates": [ { "row_number": 1, "id":"certificate_1_1", "group_id":"certificate_group_1", "description":"", "status": 0, "status_date": 1583501098350, "status_description":"", "activation_date": 0, "value":0, "nominal":500.5, "balance":0 }, { "row_number": 2, "id":"certificate_2", "group_id":"certificate_group_1", "description":"Сертификат обновлен certificate_2", "status": 0, "status_date": 1583152738533, "status_description":"Пояснение к статусу", "activation_date": 1583152738533, "value":0, "nominal":500.5, "balance":0 } ], "pagination": { "per_page": 2, "page": 1, "items": 2, "pages": 1 }, "code": 0, "message":"Операция выполнена" }
|
|
Ручная активация сертификата
POST |
/organization/certificate/activate |
|
Параметры URI |
|
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{ "id":"certificate_1",
"sum": 100, // Нужна если сумма сертификата плавающая
"doc_id":"" }
|
|
Выходной JSON |
{ "message": "Операция выполнена" |
|
Зарезервировать / снять сертификат с резерва
POST |
/organization/certificate/activate |
|
Параметры URI |
|
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
{ // Необязательный используется если нужно зарезервировать конкретный сертификат. Будет обязательным, если не заполнен group_id. Так же обязательный, если снимаем резерв (reserved=false) "id":"a91ea309-41f4-45f5-b8b2-eceb4027125a",
// Необязательный используется если нужно зарезервировать случайный деактивированный сертификат из группы. Будет обязательным, если не заполнен id "group_id":"a91ea309-41f4-45f5-b8b2-eceb4027125a",
// Действие над сертификатом. true - резервируем. false - снимаем с резерва. "reserved":true }
|
|
Выходной JSON |
{ "id":"0000000000018", "message": "Операция выполнена" |
|
Пакетная обработка сертификатов
POST |
/organization/certificate/batch/{operation} |
|
Параметры |
operation = [add,update,delete, reserve] // Обязательный. Одно из перечисленных значений. |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Входной JSON |
// Если используется reserve, тогда поведение сводится к описанному в методе ”Зарезервировать / снять сертификат с резерва”. Операция выполняется в транзакции. { "certificates": [ { "id":"c_1", "group_id":"certificate_group_1", "description":"Сертификат c_1", "reserved":true }, { "id":"c_2", "group_id":"certificate_group_1", "description":"Сертификат c_2", "reserved":true } ] } |
|
Выходной JSON |
{ } |
|
Получить продажи по сертификатам
GET |
/organization/certificate/sale_info |
|
Параметры в строке запроса |
group_id //[Необязательный]. Идентификатор группы в котором выполняется поиск id //[Необязательный]. Идентификатор сертификата по которому выполняется поиск page //[Необязательный]. Номер страницы которую нужно получить per_page //[Необязательный]. Количество строк на страницу calculate_count //[Необязательный]. Рассчитывать ли пагинацию по всей таблице? |
|
Заголовки |
token // Токен доступа выданный при авторизации |
|
Выходной JSON |
{ "certificate_sales": [ { "row_number": 1, "group_id":"certificate_group_1", "id":"certificate_1", "date": 1580135545000, "doc_id":"3", "operation": 0, "sum":50 } ] , "pagination": { "per_page": 2, "page": 1, "items": 2, "pages": 1 }, "code": 0, "message":"Операция выполнена" }
|
|