Cart.Add

Berilgan pozitsiyalar bilan alohida saqlanadigan savat yaratadi.

Integratsiyaning Bearer tokenini HTTP sarlavhasida yuboring. Batafsil — API avtorizatsiyasi.

Kirish parametrlari

Nomi Ma’lumot turi Majburiyligi Tavsif
external_id string Majburiy Savat yaratishning integratsiya doirasidagi noyob kaliti, 1–100 belgi
items array Majburiy 1–150 pozitsiya; savatda jami 150 tagacha
items[].item_id int64 Majburiy Item.Get yoki Item.Upsert bergan kassadagi istalgan mavjud tovar ID
items[].price int64 Ixtiyoriy Birlik narxi, tiyin, >= 0; berilmasa ma’lumotnoma narxi
items[].quantity int64 Majburiy Musbat miqdor ×1000; 1000 = bir birlik
items[].discount int64 Ixtiyoriy Pozitsiya chegirmasi, tiyin, sukutda 0; summadan oshmasin
items[].label string Ixtiyoriy Markirovka; berilganda format va shtrixkodga mosligi tekshiriladi

Rekvizitlar saqlangan tovardan olinadi. Berilgan price faqat ushbu pozitsiyaga tegishli, ma’lumotnoma narxini o‘zgartirmaydi. Summa: price × quantity / 1000 butun tiyingacha yaxlitlanadi, teng yarmi noldan uzoqlashtiriladi, so‘ng discount ayiriladi. Chegirma birlikka emas, butun pozitsiyaga beriladi. Har bir qo‘shish alohida qator. Tovar keyinchalik yangilansa, oldingi pozitsiyalar o‘zgarmaydi.

Yangi external_id yangi savat yaratadi. Kirishdagi cart_id qo‘llanmaydi; mavjud savatga qo‘shish mumkin emas. Bir xil external_id va parametrlar takrori dastlabki savatning joriy holatini qaytaradi, pozitsiyalarni takrorlamaydi, jumladan bekor qilish va rasmiylashtirishdan keyin ham. Bir xil kalit bilan boshqa parametrlar 703100 beradi. Takrorlashda qiymatlar va pozitsiyalar tartibini saqlang. So‘rov atomar. Yaratilgan savat ID qiymati javobning cart_id maydonida qoladi.

Markirovkani keyingi rasmiylashtirishda to‘ldirish mumkin. Berilgan markirovkali pozitsiya miqdori 1000 bo‘lishi va kod savatda takrorlanmasligi shart. Savatni saqlashda yakuniy savdo/to‘lov/fiskal tekshiruvlar bajarilmaydi.

So‘rov namunasi

Authorization: Bearer <integration-token>
Content-Type: application/json;charset=utf-8
{
    "jsonrpc": "2.0",
    "method": "Cart.Add",
    "params": {
        "external_id": "ADD-001",
        "items": [
            {
                "item_id": 101,
                "quantity": 1000,
                "price": 11000,
                "discount": 1000
            }
        ]
    },
    "id": 2
}

Chiqish parametrlari

Nomi Ma’lumot turi Tavsif
cart_id string Cart.Add qaytargan mahalliy savat ID
status string Savat holati: open, process, finished yoki canceled
receipt_id string yoki null Yakunlangan chek ID; yakunlanguncha null
created_at string Yaratish vaqti, kassa mahalliy vaqti, YYYY-MM-DD HH:mm:ss
updated_at string Yangilash vaqti, kassa mahalliy vaqti, YYYY-MM-DD HH:mm:ss
total int64 Savat summasi, chegirmadan keyin, tiyinda
items array Savat pozitsiyalari
items[].item_id int64 Cart.Add uchun mahalliy tovar ID
items[].name string Tovar nomi
items[].barcode string Shtrixkod; mavjud bo‘lmasa bo‘sh
items[].icps string IKPU kodi
items[].price int64 Birlik narxi, tiyinda
items[].quantity int64 Birlikning mingdan bir ulushidagi miqdor; 1000 — bir birlik
items[].discount int64 Butun pozitsiya chegirmasi, tiyinda
items[].amount int64 Chegirmadan keyingi summa, tiyinda
items[].vat_value int64 QQS foizning yuzdan bir ulushida; -1 — QQSsiz
items[].package_code string yoki null Qadoq kodi; mavjud bo‘lmasa null
items[].label string Birlik markirovkasi; mavjud bo‘lmasa bo‘sh

Natija: cart_id, status (open, process, finished yoki canceled), receipt_id (yopilgan chek ID, tugamaguncha null), created_at va updated_at (kassaning mahalliy vaqti, YYYY-MM-DD HH:mm:ss), total (chegirmadan keyingi summa, tiyin), items. Har bir pozitsiya: item_id, name, barcode, icps, price (birlik narxi), quantity (×1000), discount, amount (chegirmadan keyin), vat_value, package_code va label. Barcha pul qiymatlari tiyinda.

Yangi savat open holatida. Kassir ochganda process, fiskal chek yopilganda finished bo‘ladi. Dastlabki so‘rov takrori joriy holatni qaytaradi.

Javob namunasi

{
    "jsonrpc": "2.0",
    "result": {
        "cart_id": "0123456789abcdef0123456789abcdef",
        "status": "open",
        "receipt_id": null,
        "created_at": "2026-11-12 10:00:00",
        "updated_at": "2026-11-12 10:00:00",
        "total": 10000,
        "items": [
            {
                "item_id": 101,
                "name": "Тестовый товар",
                "barcode": "4780000000000",
                "icps": "00000000000000000",
                "price": 11000,
                "quantity": 1000,
                "discount": 1000,
                "amount": 10000,
                "vat_value": 0,
                "package_code": null,
                "label": ""
            }
        ]
    },
    "ok": true,
    "id": 2
}

Xatolar: umumiy; 701001 — tovar yo‘q/o‘chirilgan; 701003 — noto‘g‘ri parametrlar, jumladan qo‘llanmaydigan cart_id, narx, miqdor, chegirma, markirovka yoki limit; 703100 — kalit ziddiyati. Markirovka xatolari uchun xato kodi.