Чек: receipt-v2
актуальнаяФискализация продажи и возврата без кассы. Результат приходит в ответе на запрос.
/gate/receipt-v2HTTPтокен V2Продажа
curl -X POST 'https://ofd.yaros.kg:8143/ofd-0.0.1/gate/receipt-v2' \
-H 'Content-Type: application/json' \
-H 'token: <токен из get-token>' \
-d '{
"id": "07b2f33c-0eaf-4353-abbf-000000000007",
"cashless": true,
"operation": "INCOME",
"products": [
{ "id": "456587988", "name": "Молоко", "price": 100.00, "quantity": 6.1,
"vat_value": 12.0, "st_value": 1.0, "calcItemAttributeCode": "0" }
]
}'Возврат
Операция INCOME_RETURN, в fd_number номер исходного чека. Он есть в параметре fd_number ссылки qr из ответа на продажу.
curl -X POST 'https://ofd.yaros.kg:8143/ofd-0.0.1/gate/receipt-v2' \
-H 'Content-Type: application/json' \
-H 'token: <токен из get-token>' \
-d '{
"id": "07b2f33c-0eaf-4353-abbf-000000000008",
"cashless": true,
"operation": "INCOME_RETURN",
"fd_number": "123",
"products": [
{ "id": "456587988", "name": "Молоко", "price": 100.00, "quantity": 1,
"vat_value": 12.0, "st_value": 1.0, "calcItemAttributeCode": "0" }
]
}'Возврат сверяется с чеком-основанием: вернуть можно не больше, чем пробито, частями сколько угодно раз. Перебор отклоняется с подсказкой, сколько ещё можно вернуть.
Поля запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
id | String | да | уникальный GUID заказа, защита от дублей |
cashless | Boolean | да | true безналичная оплата, false наличная. Оплата картой проходит на вашей стороне, банк не вызывается |
operation | String | да | INCOME приход, INCOME_RETURN возврат, для обмена валюты также EXPENDITURE и EXPENDITURE_RETURN |
fd_number | String | для возврата | номер исходного чека. Для обычного прихода поля быть не должно |
products | Array | да | список товаров или услуг |
operatorTime | String | нет | время операции по вашим часам, до 40 символов, лучше ISO 8601. Сервер хранит и возвращает его как есть, в чек оно не попадает |
Поля позиции:
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
id | String | да | идентификатор товара или услуги в вашей базе |
name | String | да, кроме валюты | наименование |
price | Decimal | да | цена за единицу в сомах |
quantity | Decimal | да | количество |
vat_value | Decimal | нет | ставка НДС: 0 или 12 |
st_value | Decimal | нет | ставка НСП: 0, 1, 2, 3 или 5 |
calcItemAttributeCode | String | нет | "0" товар, "1" услуга |
currency | String | нет | код валюты, см. обмен валюты |
Ответ
{
"id": "07b2f33c-0eaf-4353-abbf-000000000007",
"status": "OK",
"qr": "https://…/ticket?date=20261102T101500&type=3&operation_type=1&…&fd_number=23&…",
"link": "https://ofd.yaros.kg:8143/ofd-0.0.1/gate/get-html-receipt/<id копии>",
"amount": 400.00,
"cashless": true,
"shiftNumber": "550",
"receiptNumber": "12"
}{ "id": "07b2f33c-0eaf-4353-abbf-000000000007", "status": "ERROR", "info": "Токен не найден. - Проверьте баланс ККМ" }| Поле | Описание |
|---|---|
id | GUID из запроса |
status | OK или ERROR |
info | описание ошибки при ERROR |
qr | ссылка для проверки чека, кодируется в чеке как QR. В ней есть fd_number и operation_type: 1 продажа, 3 покупка |
link | ссылка на электронную версию чека |
amount | сумма чека в сомах |
cashless | признак безналичной оплаты |
shiftNumber | номер смены |
receiptNumber | порядковый номер чека в смене |
operatorTime | ваше время операции, если передавали |
balance | остаток по валютам, только у валютного чека |
Повтор
Повторный запрос с тем же id вернёт тот же чек, второй раз он не пробьётся. Поэтому при обрыве связи повторяйте запрос с тем же id. Новый id для заказа, который мог пройти, создавать нельзя. Найти чек можно и поиском: метод работает для любой кассы по kkmID.
Смена
Смену можно не трогать: она откроется сама первым чеком, а старше суток закроется и откроется заново на первой же операции. Управлять ею можно командой shift-v2.