Помощь кассиру

Чек: receipt-v2

актуальная

Фискализация продажи и возврата без кассы. Результат приходит в ответе на запрос.

POST/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" }
    ]
  }'

Возврат сверяется с чеком-основанием: вернуть можно не больше, чем пробито, частями сколько угодно раз. Перебор отклоняется с подсказкой, сколько ещё можно вернуть.

Поля запроса

ПолеТипОбяз.Описание
idStringдауникальный GUID заказа, защита от дублей
cashlessBooleanдаtrue безналичная оплата, false наличная. Оплата картой проходит на вашей стороне, банк не вызывается
operationStringдаINCOME приход, INCOME_RETURN возврат, для обмена валюты также EXPENDITURE и EXPENDITURE_RETURN
fd_numberStringдля возвратаномер исходного чека. Для обычного прихода поля быть не должно
productsArrayдасписок товаров или услуг
operatorTimeStringнетвремя операции по вашим часам, до 40 символов, лучше ISO 8601. Сервер хранит и возвращает его как есть, в чек оно не попадает

Поля позиции:

ПолеТипОбяз.Описание
idStringдаидентификатор товара или услуги в вашей базе
nameStringда, кроме валютынаименование
priceDecimalдацена за единицу в сомах
quantityDecimalдаколичество
vat_valueDecimalнетставка НДС: 0 или 12
st_valueDecimalнетставка НСП: 0, 1, 2, 3 или 5
calcItemAttributeCodeStringнет"0" товар, "1" услуга
currencyStringнеткод валюты, см. обмен валюты

Ответ

Успех
{
  "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"
}
ПолеОписание
idGUID из запроса
statusOK или ERROR
infoописание ошибки при ERROR
qrссылка для проверки чека, кодируется в чеке как QR. В ней есть fd_number и operation_type: 1 продажа, 3 покупка
linkссылка на электронную версию чека
amountсумма чека в сомах
cashlessпризнак безналичной оплаты
shiftNumberномер смены
receiptNumberпорядковый номер чека в смене
operatorTimeваше время операции, если передавали
balanceостаток по валютам, только у валютного чека

Повтор

Повторный запрос с тем же id вернёт тот же чек, второй раз он не пробьётся. Поэтому при обрыве связи повторяйте запрос с тем же id. Новый id для заказа, который мог пройти, создавать нельзя. Найти чек можно и поиском: метод работает для любой кассы по kkmID.

Смена

Смену можно не трогать: она откроется сама первым чеком, а старше суток закроется и откроется заново на первой же операции. Управлять ею можно командой shift-v2.

Смотрите также